一尘不染

MySQL Orderby一个数字,Null为最后

mysql

目前,我在声明中正在执行一个非常基本的OrderBy。

SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC

问题是“位置”的NULL条目被视为0。因此,所有位置为NULL的条目都出现在具有1,2,3,4的条目之前。例如:

NULL, NULL, NULL, 1, 2, 3, 4

有没有一种方法可以实现以下排序:

1, 2, 3, 4, NULL, NULL, NULL.

阅读 552

收藏
2020-05-17

共1个答案

一尘不染

MySQL具有未记录的语法,可以最后对null进行排序。在列名之前放置减号(-),然后将ASC切换为DESC:

SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC

从本质上讲,这与position DESC将NULL值最后放置相反,但与相同position ASC

一个很好的参考在这里http://troels.arvin.dk/db/rdbms#select-
order_by

2020-05-17