为了简短起见,我在网上找到了一个教程,并紧跟着点: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/

10-11 03:13