Last order:MySQLOrderby一个数字 最后为 Null

目前我在我的声明中做一个非常基本的 OrderBy。

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

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

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

有没有办法实现以下排序:

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

MySQL 有一个未记录的语法来最后排序空值。在列名之前放置一个减号(-),并将 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

362

我发现这是一个很好的解决方案的大部分:

SELECT * FROM table ORDER BY ISNULL(field), field ASC;
36
NULL LAST
SELECT * FROM table_name ORDER BY id IS NULL, id ASC
25

类似于

SELECT * FROM tablename where visible=1 ORDER BY COALESCE(position, 999999999) ASC, id DESC

将 999999999 替换为该字段的最大值

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(1)
Viera:存储FirefoxOSViera
上一篇
Opp o 93:使用蓝牙OBEX对象推送配置文件(OPP)发送文件
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(29条)