目前,我正在我的声明中做一个非常基本的排序.
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC
问题是"position"的空条目被视为0.因此,所有位置为NULL的条目出现在位置为1,2,3,4的条目之前.如:
NULL, NULL, NULL, 1, 2, 3, 4
是否有办法实现以下订购:
1, 2, 3, 4, NULL, NULL, NULL.
目前,我正在我的声明中做一个非常基本的排序.
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC
问题是"position"的空条目被视为0.因此,所有位置为NULL的条目出现在位置为1,2,3,4的条目之前.如:
NULL, NULL, NULL, 1, 2, 3, 4
是否有办法实现以下订购:
1, 2, 3, 4, NULL, NULL, NULL.
MySQL有一个未记录的语法来最后排序空值.在列名前加一个减号(-),并将ASC切换为DESC:
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC
它本质上是position DESC
的倒数,将空值放在最后,但在其他方面与position ASC
相同.
这里有一个很好的参考