昇順ソートでNULLを最後にする方法
以下のようなテーブルrosterがあったとする。
+----+--------+ | id | name | +----+--------+ | 1 | Daniel | | 2 | NULL | | 3 | Bob | | 4 | Alice | | 5 | Carol | +----+--------+
単に ORDER BY key_col ASC とするとNULLが先頭にくる。
mysql> SELECT * FROM roster ORDER BY name ASC; +----+--------+ | id | name | +----+--------+ | 2 | NULL | | 4 | Alice | | 3 | Bob | | 5 | Carol | | 1 | Daniel | +----+--------+
NULLを最後にもってきたい場合は次のように書く。
mysql> SELECT * FROM roster ORDER BY name IS NULL ASC, name ASC; +----+--------+ | id | name | +----+--------+ | 4 | Alice | | 3 | Bob | | 5 | Carol | | 1 | Daniel | | 2 | NULL | +----+--------+
key_col IS NULL ASC でNULLが最後になるのでそのあと key_col ASC で昇順にソートする。