MySQL数据库中最常出现的值

时间:2011-03-20 01:25:28

标签: php mysql

如何在MySQL数据库中选择最常出现的值?假设我有一个num字段,包含以下行:

1, 1, 3, 1, 1, 17, 12, 1, 3, 17, 3

如果我想找到三个最常出现的值,即1,3和17,我将如何进行此操作(并计算)?

适当的方法是SELECT UNIQUE并为每个单独的值做一个计数吗?有更有效的方法吗?对于较大的数据集来说,这似乎是失败的。

感谢您的帮助!这是PHP,带有MySQL数据库。

2 个答案:

答案 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