Enk*_*kay 48 mysql sql count sql-order-by
我有一个存储ID和商店所在城市的表.
我想列出从商店最多的商店开始的所有商店.
表
ID CITY
1 NYC
2 BOS
3 BOS
4 NYC
5 NYC
Run Code Online (Sandbox Code Playgroud)
我想要的输出是以下,因为我在纽约市拥有最多的商店,我希望首先列出所有纽约市的位置.
1 NYC
4 NYC
5 NYC
2 BOS
3 BOS
Run Code Online (Sandbox Code Playgroud)
Min*_*ker 62
SELECT count(City), City
FROM table
GROUP BY City
ORDER BY count(City);
Run Code Online (Sandbox Code Playgroud)
要么
SELECT count(City) as count, City
FROM table
GROUP BY City
ORDER BY count;
Run Code Online (Sandbox Code Playgroud)
啊,对不起,我误解了你的问题.我相信Peter Langs的回答是正确的.
Pet*_*ang 29
这个计算单独查询中的计数,加入它和按该计数排序(SQL-Fiddle):
SELECT c.id, c.city
FROM cities c
JOIN ( SELECT city, COUNT(*) AS cnt
FROM cities
GROUP BY city
) c2 ON ( c2.city = c.city )
ORDER BY c2.cnt DESC;
Run Code Online (Sandbox Code Playgroud)
这个解决方案不是一个非常优秀的解决方案,所以如果你的表非常大,它将需要一些时间来执行,但它会按照你的要求进行.
select c.city, c.id,
(select count(*) as cnt from city c2
where c2.city = c.city) as order_col
from city c
order by order_col desc
Run Code Online (Sandbox Code Playgroud)
也就是说,对于您遇到的每个城市,您都在计算该城市在数据库中出现的次数.
免责声明:这可以满足您的要求,但我不建议将其用于行数过大的生产环境.
| 归档时间: |
|
| 查看次数: |
71279 次 |
| 最近记录: |