在mysql中查找最频繁的值,如果出现平局,则显示所有值

在mysql中查找最频繁的值,如果出现平局,则显示所有值,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,例如,我们有1,2和3是同时出现频率最高的值,在平局时如何返回它们 id 1 1 1 2 2 2 3 3 3 4 你可以试试: SELECT id FROM yourTable GROUP BY id HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1); 在MySQL 8+的最新版本上,我们可以在这里使用RANK: WI

例如,我们有
1
2
3
是同时出现频率最高的值,在平局时如何返回它们

id
1
1
1
2
2
2
3
3
3
4
你可以试试:

SELECT id
FROM yourTable
GROUP BY id
HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable
                   GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1);
在MySQL 8+的最新版本上,我们可以在这里使用
RANK

WITH cte AS (
    SELECT id, RANK() OVER (ORDER BY COUNT(*) DESC) rnk
    FROM yourTable
    GROUP BY id
)

SELECT id
FROM cte
WHERE rnk = 1;
你可以试试:

SELECT id
FROM yourTable
GROUP BY id
HAVING COUNT(*) = (SELECT COUNT(*) FROM yourTable
                   GROUP BY id ORDER BY COUNT(*) DESC LIMIT 1);
在MySQL 8+的最新版本上,我们可以在这里使用
RANK

WITH cte AS (
    SELECT id, RANK() OVER (ORDER BY COUNT(*) DESC) rnk
    FROM yourTable
    GROUP BY id
)

SELECT id
FROM cte
WHERE rnk = 1;

在发布到此处之前,您是否自己尝试过解决此问题?我尝试过max(count()),但此处似乎有语法错误。在发布到此处之前,您是否自己尝试过解决此问题?我尝试过max(count()),但此处似乎有语法错误。