聊一聊SQL自定义排序

专注于为中小企业提供成都网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业江城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

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

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

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

方法一  ORDER BY CASE WHEN

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

*  Citys

City=
City=
City=
City=
City=

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

方法二 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.Num

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

方法三 创建临时表

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

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

a.*  Citys a
Temp b a.City=b.City
b.Num

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

网站题目:聊一聊SQL自定义排序
URL分享:http://www.mswzjz.cn/qtweb/news5/241405.html

温江区贝锐智能技术服务部_成都网站建设公司,为您提供企业网站制作建站公司微信公众号网站设计公司关键词优化面包屑导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能