我有一个包含一百万行的表,如何从一个字段中选择最常见的(表中最多出现的值)值?
答案 0 :(得分:78)
您需要按兴趣列进行分组,并为每个值选择值本身及其出现的行数。
然后是排序问题(将最常见的值放在第一位)并将结果限制为只有一行。
在查询表格中:
SELECT column, COUNT(*) AS magnitude
FROM table
GROUP BY column
ORDER BY magnitude DESC
LIMIT 1
答案 1 :(得分:20)
This thread应该对你的问题有所了解。
基本上,将COUNT()
与GROUP BY
子句一起使用:
SELECT foo, COUNT(foo) AS fooCount
FROM table
GROUP BY foo
ORDER BY COUNT(foo) DESC
要获得第一个结果(最常见),请添加
LIMIT 1
在查询结束时。
答案 2 :(得分:6)
如果您不需要返回最常用值的频率,可以使用:
SELECT foo
FROM table
GROUP BY foo
ORDER BY COUNT(foo) DESC
LIMIT 1
这样做的另一个好处是只返回一列,因此可以在子查询中工作。