如何在MySQL数据库中选择最常出现的值?假设我有一个num
字段,包含以下行:
1, 1, 3, 1, 1, 17, 12, 1, 3, 17, 3
如果我想找到三个最常出现的值,即1,3和17,我将如何进行此操作(并计算)?
适当的方法是SELECT UNIQUE
并为每个单独的值做一个计数吗?有更有效的方法吗?对于较大的数据集来说,这似乎是失败的。
感谢您的帮助!这是PHP,带有MySQL数据库。
答案 0 :(得分:15)
这样的事情应该有效:
SELECT num, COUNT(num) AS ct
FROM yourtable
GROUP BY num
ORDER BY ct DESC
这告诉MySQL按num
列对结果进行分组。通过同时选择COUNT(num)
作为每个num
值的行数,我们可以发出ORDER BY
,它将根据{{1}的每个值的行数排序结果有}。
在表格中使用这些值:
num
结果将是:
1, 1, 3, 1, 1, 17, 12, 1, 3, 17, 3
答案 1 :(得分:0)
MySQL Cookbook有一个关于generating frequency distributions的部分,基本上归结为
SELECT num, COUNT(num) AS occurrence
FROM table
GROUP BY num