mysql – 选择max,group by并显示不在group by子句中的其他列

为了简短起见,我在网上找到了一个教程并按照这一点进行操作: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

编辑:

注意:如果两种解决方案共享相同的最高价格,则它们可能会为您提供相同类型的多种产品.

如果您最多只想要每种类型的一个项目,那么您需要在最后一行再次分组.

因此,对于这两种解决方案,最后一行将是:

GROUP BY products.type,products.price

See Demo of it

转载注明原文:mysql – 选择max,group by并显示不在group by子句中的其他列 - 代码日志