Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按每值计数排序_Mysql_Sql_Count_Sql Order By - Fatal编程技术网

Mysql 按每值计数排序

Mysql 按每值计数排序,mysql,sql,count,sql-order-by,Mysql,Sql,Count,Sql Order By,我有一个表,其中存储ID和商店所在的城市 我想列出所有的商店,从城市里商店最多的商店开始 桌子 我想要的输出如下,因为我在纽约有最多的商店,我希望所有纽约的位置都列在第一位 1 NYC 4 NYC 5 NYC 2 BOS 3 BOS 或 啊,对不起,我误解了你的问题。我相信Peter Langs的答案是正确的。这一个在一个单独的查询中计算计数,将其联接并按该计数排序(): 此解决方案不是一个非常理想的解决方案,因此,如果您的表非常大,则需要一些时间来执行,但它会满足您的要求 sel

我有一个表,其中存储ID和商店所在的城市

我想列出所有的商店,从城市里商店最多的商店开始

桌子

我想要的输出如下,因为我在纽约有最多的商店,我希望所有纽约的位置都列在第一位

1  NYC
4  NYC
5  NYC
2  BOS
3  BOS


啊,对不起,我误解了你的问题。我相信Peter Langs的答案是正确的。

这一个在一个单独的查询中计算计数,将其联接并按该计数排序():


此解决方案不是一个非常理想的解决方案,因此,如果您的表非常大,则需要一些时间来执行,但它会满足您的要求

 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
也就是说,对于您遇到的每个城市,您正在计算数据库中该城市出现的次数


免责声明:这满足了您的要求,但我不建议将其用于行数增长过大的生产环境。

也许我做得不对,但当我使用“分组方式”而不是列出每个单独的门店时,它只会列出纽约的一家门店和BOS的一家门店。知道会出什么问题吗?恩凯:这正是group by所做的。它浓缩了相同的条目。是的,但我的商店不相同,我在纽约有3家不同的商店,有一个唯一的商店ID。我需要列出每个商店。我只想按门店数量最多的城市订购。如果您将Id添加到“GROUP by”中,它将列出所有stroesExact回答您如何才能将其添加到此处?@jdwee:您可以将其添加到
ORDER by
子句之前。如果它也应该反映在计数上,那么您要么必须在子查询中重复它,要么更好:使用。如果这没有帮助,请发布一个单独的问题。
SELECT `FirstAddressLine4`, count(*) AS `Count` 
FROM `leads` 
WHERE `Status`='Yes'
AND `broker_id`='0'
GROUPBY `FirstAddressLine4` 
ORDERBY `Count` DESC 
LIMIT 0, 8
SELECT count(City) as count, City
FROM table
GROUP BY City
ORDER BY count;
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;
 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
SELECT `FirstAddressLine4`, count(*) AS `Count` 
FROM `leads` 
WHERE `Status`='Yes'
AND `broker_id`='0'
GROUPBY `FirstAddressLine4` 
ORDERBY `Count` DESC 
LIMIT 0, 8