目前我正在我的语句中执行一个非常基本的 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.
最佳答案
MySQL 有一个未记录的语法来对空值进行最后排序。在列名称前放置一个减号 (-),并将 ASC 切换为 DESC:
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC
它本质上与将 NULL 值放在最后的position DESC
相反,但在其他方面与position ASC
相同。
关于MySQL 按数字排序,最后为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634627/