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 |