将 NULL 值排序到表的末尾

PostgreSQL 是否有办法对所选表末尾的字段中具有 NULL值的行进行排序?

比如:

SELECT * FROM table ORDER BY somevalue, PUT_NULL_TO_END
53329 次浏览

这样有用吗?

ORDER BY somevalue DESC NULLS LAST

摘自: http://www.postgresql.org/docs/9.0/static/sql-select.html

NULL按默认的 ascending顺序排序,不需要做任何额外的事情。

这个问题适用于 下降顺序,这是一个完美的逆序,因此对 NULL值进行排序。
PostgreSQL 8.3 引入了 NULLS LAST:

ORDER BY somevalue DESC NULLS LAST

对于 PostgreSQL 8.2及以上或其他 没有这个标准 SQL 的 RDBMS功能:

ORDER BY (somevalue IS NULL), somevalue DESC

FALSETRUE之前排序,所以 NULL值排在最后,就像上面的例子一样。

参见: