【问题标题】:Subquery using min function in sql在sql中使用min函数的子查询
【发布时间】:2019-04-04 21:27:13
【问题描述】:

这是架构

  • 作者(aID、fName、姓氏)
  • 图书(isbn、标题、作者 ID、流派、pubYear、出版商、rrPrice、avgRating)
  • bookShop(shopNo、shopName、街道、城市、县)
  • 订单(orderNo、sNo、oDate、salesRep)
  • 订单详情(oNo,bookISBN,数量)

这是查询:

SELECT 
    title, pubYear, quantity 
FROM 
    book 
INNER JOIN 
    orderDetails ON ISBN = bookisbn
WHERE 
    avgRating = (SELECT MIN(avgRating)
                 FROM orderDetails)

我正在尝试获得评分最低的书籍,但这会返回所有书籍

【问题讨论】:

  • orderDetails中没有avgRating字段?
  • orderDetails 中没有 avgRating 字段。它在书里。
  • @Zorkolot 不,应该先这样做而不是子查询?
  • 请忽略我之前的评论。看来您正在寻找有关不同订单的 min(avgRating) 。这与“获得评分最低的书”不同。
  • 我会指出,查询不一定给出评分最低的书。这个问题没有足够的信息。例如,最低评分可以由 Metacritic 确定,而不是由书店确定。您对已订购的图书的评分最低。您必须澄清这里描述的粒度。无论是曾经在书店订购过的书、曾经在书店订购过的任何书,还是书店中每个特定订单中评分最低的书,您都想要所有的书吗?

标签: sql subquery min


【解决方案1】:

我认为您需要以下查询,因为您的评分列在书表上,因此您可能需要更改子查询中的表名

SELECT title, pubYear, quantity 
FROM book INNER JOIN orderDetails ON ISBN=bookisbn
WHERE avgRating=(SELECT min(avgRating)
                    FROM book )

【讨论】:

    【解决方案2】:

    我想你可能想要:

    SELECT b.title, b.pubYear
    FROM book b
    WHERE b.avgRating = (SELECT min(b2.avgRating)
                         FROM book b2
                        );
    

    两件事。我删除了数量。我想你想总结一下,但你的问题没有具体说明,每个订单的单独行似乎很奇怪。其次,我添加了表别名和限定列名。这才是最重要的。

    您认为您的查询是:

    SELECT b.title, b.pubYear, od.quantity 
    FROM book b INNER JOIN 
         orderDetails od
         ON b.ISBN = od.bookisbn
    WHERE b.avgRating = (SELECT MIN(od2.avgRating)
                         FROM orderDetails od2
                        )
    

    但是orderDetails中没有avgRating列,所以WHERE子句真的是:

    WHERE b.avgRating = (SELECT MIN(b.avgRating)
                         FROM orderDetails od2
                        )
    

    嗯,您是在将列与其外部引用进行比较——难怪它总是正确的。

    故事的寓意:总是限定您的表名,最好使用有意义的表别名,即表名的缩写。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2013-12-31
      相关资源
      最近更新 更多