MySQL - 如何根据计算的数量重新排序记录

Yur*_*Tim 2 mysql count

请帮我弄清楚如何得到这样的表格:

ID  Name    City
--  ----    ----
1   A       2       
2   C       1
3   E       3
4   B       2
5   D       2
6   G       3
7   F       2
Run Code Online (Sandbox Code Playgroud)

......像这样排序:

ID  Name    City
--  ----    ----
1   A       2   
4   B       2
5   D       2
7   F       2   
3   E       3
6   G       3
2   C       1
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望首先根据城市名称的数量重新排序,然后按名称重新排序.拥有更多名字的城市应该先行.

use*_*836 7

这应该做的伎俩:

select c.* from c 
inner join (
  select City, count(*) as cnt from c group by City
) a
on c.City = a.City
order by a.cnt desc, c.name asc
Run Code Online (Sandbox Code Playgroud)

这是SQL小提琴