MySQLORDERBYIF()条件排序

更新时间:2023-06-13 18:25:42 阅读: 评论:0

MySQLORDERBYIF()条件排序
迈克尔杰克逊you are not alone
在做sqlzoo的时候,碰到⼀个SQL的排序问题,他把符合条件的单独⼏⾏,可以放在查询结果的开始,或者查询结果的尾部通过的⽅法就是IN语句(也可以通过IF语句)
⾃⼰做了个测试,如下,这个是表的所有内容
untilyou
使⽤ORDER BY配合IF语句
⽐如我想将species为snake的⾏数,单独列出来,我可以这样查询
受伤英文SELECT * FROM pet ORDER BY if (species='snake',0,1),species;
结果如下
kuroshitsuji
我们可以看到,species为snake的⾏数,被强⾏放置到了查询结果开头
这是怎么做到的呢?
这⾥需要注意:
if (species='snake',0,1),species;
这句话的意思是,我对species进⾏排序的同时,给species附加⼀个隐藏属性,这个隐藏属性,可以是0或者1巴克莱银行
什么意思呢?就是在对species排序的时候,优先级是判断species是否为snake,如果是,返回0,如果不是,返回1.
随后,先进⾏species隐藏属性的排序,隐藏属性拍完以后,再进⾏剩余species的排序什么是pk
也就是说,你可以把这个 if 语句,看成是⼀个独⽴的column
那如果我们想把snake的这⼀⾏放在查询结果尾部呢?
那你可以这样写  SELECT * FROM pet ORDER BY if(species='snake',0,1) DESC,species;
正如上⾯⼀段说的,你可以把if 语句看成是独⽴的column,所以你也可以为他添加排序条件ASC或者DESC,当然默认是ASC,可以不写。
这样,查询就等于第⼀步是查询隐藏属性0,1,然后进⾏DESC排序,因为species=snake的返回值是0,所以进⾏倒序排列时,就被排在了最后
蜂鸣器英文以此类推,你在进⾏隐藏属性优先排序的同时,对于剩下的排序,你也可以另外进⾏ASC或者DESC的排序,就不截图了。
使⽤ORDER BY配合IN语句
ling上⾯⼀个是满⾜单个条件,返回0或者1,那如果需要⽤到⼀个范围呢?你可以使⽤IN语句
⽐如下⾯,我要求把出⽣⽇期为1993-02-04或者1989-05-13的⾏数,排在最后
SELECT * FROM pet ORDER BY birth IN('1993-02-04','1989-05-13'),birth;
badminton怎么读这样的话,birth IN语句会进⾏判断,如果birth满⾜条件,返回1,不满⾜,返回0
所以,满⾜条件的两⾏,因为返回值是1,进⾏ASC排序的时候,就被放置在了最后。
lookahead

本文发布于:2023-06-13 18:25:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/143906.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:排序   隐藏   属性   查询   结果   语句   时候   条件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图