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
运行结果:
在这里插入图片描述图五

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值