MYsql空值排序问题

  • Post author:
  • Post category:mysql

MYsql空值排序问题

刚才同事问一问题,mysql空值排序问题,降序排列,把空值排在前面,于是就这问题我有重新写了一下。
在order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是在最前面的。反之同理

MySQL将null算作最小值。如何想要手动指定null的顺序?

1、null值排在最前
用Mysql的IF和ISNULL函数。如果为空返回0,否返回1
select * from user ORDER BY IF(ISNULL(dateOfBirth),0,1) ,dateOfBirth desc;
运行结果:
在这里插入图片描述图一
2、null值排在最后
用Mysql的IF和ISNULL函数。如果为空返回1,否返回0
select * from user ORDER BY IF(ISNULL(dateOfBirth),1,0) ,dateOfBirth desc
运行结果:
图二
3、大家会发现图一中的运行结果中会存在两种空值图三1‘’空值,2null空值
在这里插入图片描述图三
当时那个表中只显示的是‘’,一时没有想起是空值的问题,按照上面12的方式,一直没达到预期目标,刚才添加‘’空值** IF((dateOfBirth = ‘’),0,1)** 排序终于达到目标效果,按照45来。

4、null值排在最前
用Mysql的IF和ISNULL函数。如果为空返回0,否返回1
select * from user ORDER BY IF(ISNULL(dateOfBirth),0,1) , IF((dateOfBirth = ‘’),0,1) , dateOfBirth desc;
运行结果:
在这里插入图片描述图四
5、null值排在最后
用Mysql的IF和ISNULL函数。如果为空返回1,否返回0
select * from user ORDER BY IF(ISNULL(dateOfBirth),1,0) , IF((dateOfBirth = ‘’),1,0) ,dateOfBirth desc
运行结果:
在这里插入图片描述图五


版权声明:本文为u011670830原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。