August Rush

一个还在努力成长的小火汁!

游龙当归海,海不迎我自来也。

We create our own demons.

You can reach me at augustrush0923@gmail.com
MySQL排序使Null结果排到最后
发布:2023年03月01日 | 作者:augustrush | 阅读量: 562

MySQL排序使Null结果排到最后

今天遇到了一个需求,需要根据一个字段的值正序来排序,但空值要排在最后。

SELECT * FROM some_schema ORDER BY some_field;

当这个字段全部有值的时候,排序是可以正常使用的。

如果这个字段出现Null值的时候,这样的写法就会把Null值排在最前面。

stack overflow上的问答解决了我的问题

其实这个解决思路就是先排序Null值,然后再根据字段的排序规则来排即可解决问题。

方法一:

SELECT * FROM some_schema ORDER BY some_field IS NULL, some_field ASC;

方法二:

SELECT * FROM some_schema ORDER BY ISNULL(some_field), some_field;

方法三:

Mysql有个官方文档里没有说出的语法,可以把null结果排到最后:把-号(负号)放到要排序的列名前,并把asc替换为desc

SELECT * FROM some_schema ORDER BY -some_field DESC;

其实还可以通过CASE WHENIF控制语句来做,但没必要。



  • 标签云

  • 支付宝扫码支持一下

  • 微信扫码支持一下



基于Nginx+Supervisord+uWSGI+Django1.11.1+Python3.6.5构建

京ICP备20007446号-1 & 豫公网安备 41100202000460号

网站地图 & RSS | Feed