MySQL | NULL 値の並び順を変更する

ORDER BY 句で並び替えるとき、値が NULL のデータが先頭に表示される場合がある。
ここでは、その対処方法について説明する。

構文

SELECT "フィールド"
FROM "テーブル名"
ORDER BY "フィールド" IS NULL [ASC|DESC]

store_information テーブル

region_name store_name sales
West Los Angeles 1500
West San Diego 250
West Los Angeles
East Boston 700

SQL 例: NULL が先頭に並ぶ

上記のようなテーブルがあるとして、次の SQL 文を作成して実行すると、

SELECT store_name, sales
FROM store_information
ORDER BY sales ASC

次のように NULL 値が先頭に並ぶ。

store_name sales
Los Angeles NULL
San Diego 250
Boston 700
Los Angeles 1500

SQL 例: NULL を最後に並べる

NULL 値を後ろに並べるには、次のように SQL 文を作成して実行する。

SELECT store_name, sales
FROM store_information
ORDER BY sales IS NULL ASC, sales ASC

次のように NULL 値が最後に並ぶ。

store_name sales
San Diego 250
Boston 700
Los Angeles 1500
Los Angeles NULL