MySQL - SELECT 出现最多的值(有几次相同的出现)

时间:2021-07-09 11:47:07

标签: mysql select

我一直在寻找一种方法来执行 MySQL 选择以获取所有最常出现的值。我在使用 LIMIT 1 时找到的所有解决方案,但是如果有多个值出现相同的次数,这将无济于事。例如:

客户

<头>
ID 名字
1 鲍勃
2 汤姆
3 鲍勃
4 罗伯特
5 汤姆
6 蒂莫西

选择出现次数最多的名字应该导致:

<头>
名字
鲍勃
汤姆

因为两者都出现了两次。

我尝试了以下方法:

SELECT FirstName FROM (
  SELECT FirstName, COUNT(FirstName) as counter FROM customer
  GROUP BY FirstName
  HAVING counter = MAX(counter)
) s

但这似乎不起作用,我真的很感激朝正确方向的推动。

1 个答案:

答案 0 :(得分:1)

可以有不同的方法来做到这一点

你可以试试

第一个

SELECT FIRSTNAME 
FROM customer
GROUP BY FirstName Having count(FirstName) = (
   SELECT COUNT(FirstName) FROM customer GROUP BY FirstName ORDER BY 1 
   DESC LIMIT 1);

第二个

with cte as
(
  SELECT COUNT(FirstName) MaxCounter
  FROM customer 
  Group By FirstName ORDER BY  COUNT(FirstName) DESC LIMIT 1
)

SELECT c.FirstName
From customer c
Group BY FirstName
HAVING COUNT(FirstName) = (SELECT MaxCounter FROM cte)