MySQL中order by语句对null字段的排序
来源:互联网 发布:手机摄影后期制作软件 编辑:程序博客网 时间:2024/05/16 18:31
默认情况下,MySQL将null算作最小值。如果想要手动指定null的顺序,可以使用:
1.将null强制放在最前:
if(isnull(字段名),0,1) asc //asc可以省略
2.将null强制放在最后
if(isnull(字段名),0,1) dsc
if(isnull(字段名),1,0) asc //asc可以省略
对于这种使用方式的理解:
以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.执行:
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;
结果如下:
第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值都被强制指定在最后。
- MySQL中order by语句对null字段的排序
- MySQL中order by语句对null字段的排序
- MySQL中order by语句对null字段的排序
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- sql中order by对null值的排序
- SQL语句中order by两个字段同时排序
- mysql数据库order by语句 null 处理
- sql语句中order by 多个字段同时排序的应用
- row_number () over(partition by order by) 在 impala 和 hive 中的对NULL排序的问题
- [Mysql] MySQL数据库中 不得不用到的Order by语句
- mysql distinct和order by 一起用时,order by的字段必须在select中
- order by后多个字段的排序
- SQL语句order by两个字段同时排序。
- 机器学习
- 微信直播教程:微信直播时如何做直播倒计时预告效果
- 浅谈ztree节点的增加和获取
- Struts2_文件上传关于限制文件名、类型及大小
- 使用Java中的Process类调用本地程序
- MySQL中order by语句对null字段的排序
- APC注入
- maven有关笔记
- 提升进程权限
- java-Object类
- 通过进程名称得进程ID
- 通过进程名称得线程id
- 枚举进程
- Linux文档中翻页和搜索关键字