Cit*_*bot 5 mysql group-by max
为了简短起见,我在网上找到了一个教程,并紧跟着这一点:http : //www.tizag.com/mysqlTutorial/mysqlmax.php
SELECT type, MAX(price) FROM products GROUP BY type
Run Code Online (Sandbox Code Playgroud)
我的问题是:我该如何回应最昂贵的“衣服”(在本例中为“衬衫”)?
更新:
抱歉,我不好。我需要让自己更清楚。我正在寻找的解决方案是显示每个“名称”最昂贵的位置:
name type price
Clothing Blouse 34.97
Toy Playstation 89.95
Music Country Tunes 21.55
Run Code Online (Sandbox Code Playgroud)
尝试以下查询:
解决方案#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;
Run Code Online (Sandbox Code Playgroud)
解决方案#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 )
Run Code Online (Sandbox Code Playgroud)
编辑:
注意:type如果maximum价格相同,两种解决方案都可能为您提供相同的多个产品。
如果您严格要求每种类型最多有一个项目,那么您需要group by在最后一行再次。
因此,对于这两种解决方案,最后一行都是:
GROUP BY products.type, products.price
| 归档时间: |
|
| 查看次数: |
3908 次 |
| 最近记录: |