MySQL中orderby语句对null字段的排序
默认情况下,MySQL将null算作最⼩值。如果想要⼿动指定null的顺序,可以使⽤:mysql语句顺序
1.将null强制放在最前:
if(isnull(字段名),0,1) asc //asc可以省略
2.将null强制放在最后
if(isnull(字段名),0,1) dsc
if(isnull(字段名),1,0) asc //asc可以省略
对于这种使⽤⽅式的理解:
java中sleep用法 以if(isnull(字段名),0,1)为例,它的意思是将该字段根据是否为null值分成两部分,值为null⾏相当于得到了⼀个隐含的排序属性0,值为⾮null的⾏相当于得到了⼀个隐含的排序属性1,在排序的时候,先根据这⼀隐含属性进⾏升序排列,因为if(isnull(字段名),0,1)相当于if(isnull(字段名),0,1) asc省略了asc⽽已,所以⾃然地,排序字段为null的那些⾏(隐含排序属性)会在最前。
对于将null强制放在最后的语句的理解以此类推。
下⾯在MySQL 5.6上做⼀个测试:
测试的表的结构如下:
create table test
(
id int primary key auto_increment,
num int
);
表中已经有6条数据,分别为:
1.执⾏ :
资源稳定永久更新大象select*from test order by num;
结果如下:
2.执⾏:windows php环境搭建
select*from test order by num desc;
结果如下:
第1、2步结果显⽰:默认情况下null为最⼩。
3.执⾏:
select*from test order by if(isnull(num),0,1),num;结果如下:
4.执⾏:
select*from test order by if(isnull(num),0,1),num desc;
typedef int elemtype有什么用结果如下:
第3、4步结果显⽰:通过if(isnull(num),0,1),不管后⾯的num字段是升序还是降序,null值都被强制指定在最前。
5.执⾏:
select*from test order by if(isnull(num),1,0),num;
结果如下:
便利店小程序怎么制作6.执⾏:
select*from test order by if(isnull(num),1,0),num desc;
结果如下:
第5、6步结果显⽰:通过if(isnull(num),1,0) ,不管后⾯的num字段是升序还是降序,null值都被强制指定在最后。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论