我正在尝试找到一个MySQL查询,该查询将在特定字段中找到DISTINCT值,计算该值的出现次数,然后按计数对结果进行排序。
示例db
id name
----- ------
1 Mark
2 Mike
3 Paul
4 Mike
5 Mike
6 John
7 Mark
预期结果
name count
----- -----
Mike 3
Mark 2
Paul 1
John 1
由于
答案 0 :(得分:364)
SELECT name,COUNT(*) as count FROM tablename GROUP BY name ORDER BY count DESC;
答案 1 :(得分:11)
这样的事情:
select name, count(*) as num
from your_table
group by name
order by count(*) desc
即,您正在选择名称和出现的次数;但按名称分组,因此每个名称只选择一次。
然后,你按次数命令,desc;让出现频率最高的用户排在第一位。
答案 2 :(得分:4)
刚刚将Amber的COUNT(*)更改为COUNT(1)以获得更好的性能。
SELECT name, COUNT(1) as count
FROM tablename
GROUP BY name
ORDER BY count DESC;