从GROUP BY获取MAX

enc*_*nce 7 mysql sql select group-by

当我遇到这个时,我正在练习一些SQL.我想知道某种商品出现了多少次,从那里获得了最多商品.

这表明每种商品出现的次数:

mysql> SELECT commodity, COUNT(commodity) count FROM orders GROUP BY commodity ORDER BY count;
+----------------------+------------+
| commodity            |    count   |
+----------------------+------------+
| PERSIAN MELON        |          4 |
| BEANS                |          6 |
| CASABA               |         10 |
| ASPARAGUS            |         11 |
| EGGPLANT             |         12 |
| TOMATOES, CHERRY     |         16 |
| GALIA MELON          |         18 |
+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)

我试图得到最高的行,但这都是错的:

mysql> SELECT commodity, MAX(COUNT(commodity)) count FROM orders GROUP BY commodity ORDER BY count;
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

Joh*_*Woo 9

注意:查询不会处理具有最大值的重复记录 COUNT

SELECT  commodity,  COUNT(commodity) `count` 
FROM    orders 
GROUP   BY commodity
ORDER   BY `count` DESC 
LIMIT   1
Run Code Online (Sandbox Code Playgroud)

但是这会,

SELECT  commodity,  COUNT(commodity) `count` 
FROM    orders 
GROUP   BY commodity
HAVING  COUNT(commodity) =
(
    SELECT MAX(`COUNT`) 
    FROM
    (
        SELECT  COUNT(commodity) `count` 
        FROM    orders 
        GROUP   BY commodity
    )   s
)
Run Code Online (Sandbox Code Playgroud)