如何按特定列中的出现次数订购mysql表?
示例表:
ID Name
1 Alfred
2 Alfred
3 Burt
4 Alfred
5 Jill
6 Jill
7 Jill
8 Jill
9 Burt
排序表应如下所示,因为" Jill"是最常出现的名称,应该先排序,依此类推:
ID Name
5 Jill
6 Jill
7 Jill
8 Jill
1 Alfred
2 Alfred
4 Alfred
3 Burt
9 Burt
答案 0 :(得分:5)
您必须将信息引入查询。这通常使用join
:
select e.*
from example e join
(select name, count(*) as cnt
from example
group by name
) en
on e.name = en.name
order by cnt desc, e.name, e.id;
请注意,order by
不仅按计数排序。它还按名称命令。如果两个名称具有相同的计数,那么它将使它们保持在一起。