当前位置: 当前位置:首页 >IT科技类资讯 >聊一聊SQL自定义排序正文

聊一聊SQL自定义排序

作者:应用开发 来源:应用开发 浏览: 【】 发布时间:2025-11-04 00:27:33 评论数:

今天给大家介绍几种方法来求解这样的聊聊问题,我们先看下示例表:

这张表的定义数据是随机录进去的,下面我们希望按照我们指定的排序顺序输出为如下内容:

注意:这里既没有按照人口的多少排序,也没有按照GDP的聊聊多少排序,更加没有按照城市的定义拼音首字母排序,完全是排序按照我们自己的意愿进行排序。

方法一  ORDER BY CASE WHEN

通过在ORDER BY的聊聊时候,我们对想要的定义输出顺序使用CASE WHEN,云南idc服务商将文本转化为可排序的排序数字来进行间接排序,具体代码如下:

复制*

Citys

City= City= City= City= City=1.2.3.4.5.6.7.

此方法针对比较简单的聊聊查询容易实现自定义排序,在比较复杂场景中使用起来有限制。定义

方法二 UNION ALL

使用UNION ALL的排序方法容易理解,但是聊聊代码会写的比较复杂,具体如下:

复制a.City,定义a.Population,a.GDP( ,* Citys City=

ALL

,* Citys City=

ALL

,* Citys City=

ALL

,* Citys City=

ALL

,* Citys City=)

a

a.Num1.2.3.4.5.6.7.8.9.10.11.12.13.

我们通过增加一列自定义的Num,给查询出来的排序每一行记录赋一个值,这个值是我们输出的顺序,再通过子查询对这个自定义的Num进行排序即可。香港云服务器时常用在比较复杂的查询语句中,且需要自定义排序的场景下。

方法三 创建临时表

相比上面两种方法,创建临时表的方法可以极大的减少代码量。我们可以先创建一个按照我们希望输出的顺序的临时表Temp,具体如下:

当我们需要自定义排序输出时,可以直接关联该临时表,具体代码如下:

复制a.*

Citys a

Temp b a.City=b.City b.Num1.2.3.

这种方法相对于上面两种方法只需要更新临时表中的顺序即可,可以适应各种不同的场景。​