我有一个名为food
的表:
CREATE TABLE food(
name varchar(30) primary key,
type varchar(30)
);
我想找到此表中出现次数最多的type
。
我可以使用
找到它SELECT type
FROM food
GROUP BY type
ORDER BY count(type) DESC
LIMIT 1
但limit 1
未包含在标准中。如何使用MAX
找到相同的结果?例如,我想要像
SELECT type
FROM food
GROUP BY type
HAVING count(type) = MAX(count(type));
HAVING count(type) = MAX(count(type));
是不允许的。
答案 0 :(得分:2)
可能效率不高
SELECT type
FROM food
GROUP BY type
HAVING COUNT(type) =
(
SELECT MAX(counting) FROM
(
SELECT COUNT(type) AS counting
FROM food
GROUP BY type
) t
)
答案 1 :(得分:1)
使用cte(公用表格表达式),GROUP BY
与COUNT
一起使用:
with cte as
(
SELECT type, count(*) as cnt
FROM food
GROUP BY type
)
select type from cte
where cnt = (select max(cnt) from cte)
如果有平局,将返回两行。
(我不知道与Madhivanan的回答相比,这是否会有相同或更好的表现。无论如何都要少打字。)