SQL自定义排序的三种方法
创作时间:
作者:
@小白创作中心
SQL自定义排序的三种方法
引用
1
来源
1.
https://cloud.tencent.com/developer/article/2412003
在SQL查询中,有时我们需要按照特定的顺序输出结果,而不是基于任何列的自然排序。例如,我们可能需要按照"北京、天津、上海、重庆……"这样的顺序来显示城市数据。本文将介绍三种实现这种自定义排序的方法。
示例表结构
我们使用一张名为Citys的表作为示例,表中包含城市名称、人口和GDP等信息。表中的数据是随机录入的。
目标输出
我们需要按照特定顺序输出城市数据,这个顺序既不是人口多少,也不是GDP多少,更不是城市名称的拼音首字母,而是完全按照我们自己的意愿进行排序。
方法一:使用ORDER BY CASE WHEN
这种方法通过在ORDER BY子句中使用CASE WHEN语句,将文本转化为可排序的数字来进行间接排序。
SELECT * FROM Citys
ORDER BY
CASE WHEN City='北京' THEN 1
WHEN City='天津' THEN 2
WHEN City='上海' THEN 3
WHEN City='重庆' THEN 4
WHEN City='广州' THEN 5
END
这种方法适用于简单的查询场景,但在复杂场景中使用起来会受到限制。
方法二:使用UNION ALL
这种方法通过UNION ALL子句为每个城市添加一个自定义的排序序号,然后对这个序号进行排序。
SELECT a.City,a.Population,a.GDP FROM
(
SELECT 1 Num,* FROM Citys WHERE City='北京'
UNION ALL
SELECT 2 Num,* FROM Citys WHERE City='天津'
UNION ALL
SELECT 3 Num,* FROM Citys WHERE City='上海'
UNION ALL
SELECT 4 Num,* FROM Citys WHERE City='重庆'
UNION ALL
SELECT 5 Num,* FROM Citys WHERE City='广州'
) a
ORDER BY a.Num
这种方法虽然容易理解,但代码会变得比较复杂,通常用于需要复杂查询且需要自定义排序的场景。
方法三:创建临时表
这种方法通过创建一个临时表,将自定义的排序顺序存储在临时表中,然后在查询时通过JOIN关联这个临时表。
首先创建临时表:
CREATE TEMPORARY TABLE Temp (Num INT, City VARCHAR(255));
INSERT INTO Temp VALUES (1, '北京'), (2, '天津'), (3, '上海'), (4, '重庆'), (5, '广州');
然后使用JOIN进行排序:
SELECT a.* FROM Citys a
JOIN Temp b ON a.City=b.City
ORDER BY b.Num
这种方法代码量较少,且易于维护,只需要更新临时表中的顺序即可适应各种不同的场景。
热门推荐
第一次参加数学建模竞赛必须做这些事......
四合院传统文化:你不知道的四合院文化内涵
江苏科技大学《AFM》:全球缺水与能源危机迎新解
吊兰养殖方法和技巧
吊兰怎么养才能更旺盛?从光照到浇水的全方位养护指南
狗被偷了报警有用吗
电涡流vs旋变,谁是电机位置传感器的最优解
左转弯交通规则小常识(你可能没掌握这个转弯技巧!)
加强医疗纠纷防治,提高医疗服务质量
智联招聘:2024年大学生就业力调研报告
不思议迷宫太空船废墟玩法攻略
聚氨酯产业迎来重大突破:两大绿色制备技术实现国产化
儿童综合素质提升:寓教于乐的小组活动计划
马拉松跑者健康指南:从入门到进阶的全方位指导
配色小白必学的PPT配色实用技巧
春季补钙攻略来了!儿医专家划重点:这些误区千万别踩
颈动脉斑块吃他汀多长时间能好
广南双专班行动 让村集体“三资”家底彻底晾晒
神经质人格怎么改善
选购开学行李箱的实用指南
个人征信证明要怎么开?逾期多久会上征信黑名单?
冠脉生理学行业新标准-计算冠脉生理学系列技术的发生和发展(上)
从《钗头凤》到《红豆词》,外国人对中国艺术歌曲着了迷
老司机教你如何节油驾驶
中枢性面瘫与周围性面瘫怎么鉴别
【康复科普】中枢性面瘫 VS 周围性面瘫
屋檐上的文脉丨《黑神话:悟空》篇——悬塑
日本社会安全度为何排名世界第二
王楚然的成名史:从校园到荧幕的逐梦之旅
父亲的赔偿款子女有权继承吗