这个问题在这里已经有答案了:
sql:选择不同行时按一个字段中的最小值分组(9个答案)
两年前关门了。
我创建了一个具有以下属性的books表:books(bookid、bookname、author、price)
现在我想找出价格最低的那本书的名字(最便宜的书的名字),以及它的价格。
为此,我做了如下工作:
SELECT min(Price) FROM Books;
这给了我最低价格(55.36美元)。然后我用了:
SELECT BookName,Price FROM Books
WHERE Price=55.36;
这给了我想要的答案。。。
但我想问,有没有更好的方法,这样我就不需要知道最低价格,然后才能找到答案?我可以在一个单一的查询吗?
我试过这样的方法:
SELECT BookName,Price FROM Books
WHERE Price=min(Price);
但我得到了一个无效的使用组函数的错误。任何帮助都将不胜感激。我使用的是mysql服务器8.0版。
谢谢!
1条答案
按热度按时间vjhs03f71#
在派生表中,可以确定所有书籍的最小价格值。现在,您可以将这个结果集连接回主表
Books
关于最小价格值,得到具有最低价格的行。另一种方法是使用子查询。在子查询中,确定最小价格值,然后使用
WHERE .. IN(..)
要确定具有最低价格值的行,请执行以下操作: