请教大神 SQL 排序问题。难倒我了

2017-10-20 08:40:01 +08:00
 nestlake
请教大神
有一个数据表
city company
合肥 a
上海 b
武汉 c
合肥 d
杭州 e
合肥 f
武汉 g

现在想实现如下排序,怎么弄? group by 好像不行
合肥 a
合肥 d
合肥 f
武汉 c
武汉 g
杭州 e
上海 b

请教大神,SQL 该怎么写??谢谢😘😚😗😙
4958 次点击
所在节点    问与答
50 条回复
msg7086
2017-10-20 16:17:03 +08:00
@fatduo city = city 的子查询目测很难用上索引。

@nestlake 这种需求我不会考虑在 SQL 上做。
mooncakejs
2017-10-20 16:41:15 +08:00
支持开窗就简单,select * from test order by count(1) over (partition by city) desc ,company
nestlake
2017-10-20 17:14:15 +08:00
@mooncakejs 具体点?
mooncakejs
2017-10-20 17:29:11 +08:00
@nestlake 就是这条语句,不过 mysql 并不支持。
看文档 mysql 8,0 后可以支持。
nine99
2017-10-20 17:49:38 +08:00
改设计,城市改成 region code
jacsice
2017-10-20 17:53:46 +08:00
@Jackliu91 这位大神这么吊,没人回复?
mooncakejs
2017-10-20 17:54:27 +08:00
mysql 有个类似的实现避免 join, 扫描结果应该是 O(n)。
select * from test order by find_in_set(city,( select group_concat(city) from (select city from test group by city order by count(1) desc) a)),company ;

这个需求,不能避免全表扫描。
nestlake
2017-10-20 18:16:20 +08:00
谢谢大家,感谢
nestlake
2017-10-20 18:16:35 +08:00
感觉这里的氛围真好
nestlake
2017-10-24 15:37:11 +08:00
谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX