255

我试图找到一个 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
4

3 回答 3

450
SELECT name,COUNT(*) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;
于 2009-08-28T11:10:59.237 回答
19

像这样的东西怎么样:

SELECT
  name,
  count(*) AS num
FROM
  your_table
GROUP BY
  name
ORDER BY
  count(*)
  DESC

您正在选择名称及其出现的次数,但按名称分组,因此每个名称仅选择一次。

最后,您按 DESCending 顺序按次数排序,以使出现频率最高的用户排在第一位。

于 2009-08-28T11:11:37.690 回答
7

只需将 Amber 的 COUNT(*) 更改为 COUNT(1) 以获得更好的性能。

SELECT name, COUNT(1) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;
于 2018-02-26T20:05:55.457 回答