我正在尝试找到一个MySQL查询,该查询将在特定字段中找到DISTINCT值,计算该值的出现次数,然后按该计数对结果进行排序。
示例数据库
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
SELECT name,COUNT(*) as count
FROM tablename
GROUP BY name
ORDER BY count DESC;
类似这样的东西:
SELECT
name,
count(*) AS num
FROM
your_table
GROUP BY
name
ORDER BY
count(*)
DESC
您正在选择名称及其出现的次数,但是按名称分组,因此每个名称仅被选择一次。
最后,您按降序排列的次数排序,以使出现频率最高的用户排在首位。
只需将琥珀色的COUNT(*)更改为COUNT(1)即可获得更好的性能。
SELECT name, COUNT(1) as count
FROM tablename
GROUP BY name
ORDER BY count DESC;