为了简短起见,我在网上找到了一个教程,并紧跟着点:http://www.tizag.com/mysqlTutorial/mysqlmax.php
SELECT type, MAX(price) FROM products GROUP BY type
我的问题是:
如何显示哪个“衣服”最昂贵(在这种情况下为“上衣”)?
更新:
抱歉,我不好。我需要让自己更清楚。我正在寻找的解决方案是显示每个“名称”最昂贵的位置:
name type price
Clothing Blouse 34.97
Toy Playstation 89.95
Music Country Tunes 21.55
最佳答案
请尝试以下查询:
解决方案#1:
SELECT
products.name,
products.type,
products.price
FROM products
INNER JOIN
(
SELECT type,MAX(price) max_price
FROM products
GROUP BY type ) t
ON products.type = t.type
AND products.price = t.max_price;
Demo Here
解决方案2:
SELECT
products.name,
products.type,
products.price
FROM
products
WHERE (type, price) IN (
SELECT type, MAX(price) max_price
FROM products
GROUP BY type )
See Demo
编辑:
注意:如果两个解决方案共享相同的
type
价格,则这两种解决方案都可能为您提供多个使用相同maximum
的产品。如果您严格要求每种类型最多包含个项目,则需要在最后一行中再次输入
group by
。因此,对于这两种解决方案,最后一行是:
GROUP BY products.type, products.price
See Demo of it
关于mysql - 选择最大,分组依据并显示不在分组依据子句中的其他列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35800724/