😺

[MySQL]ORDER BY カラム名 IS NULL ASCでNULLが後ろにくる仕組み

2022/10/14に公開

はじめに

本記事は、筆者による理解の復習・確認やアウトプットの練習のために書いております。
間違った解釈等ございましたら、ご連絡いただけますと幸いです。

MySQL における NULL の扱いについて

概念的には「存在しない不明な値」を意味するが、MySQL ではfalseを意味する。

IS NULL を使うと何が得られるのか

IS NULL を使うと、対象のカラムが NULL なら 1, それ以外なら 0 が得られる。
下記は IS NULL と IS NOT NULL を実行した時の結果

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL  | 1 IS NOT NULL |
+-----------+---------------+
|     0  |       1  |
+-----------+---------------+

ORDER BY 〜 IS NULL ASC をするとどうなるのか

ORDER BY 対象カラム名 IS NULL (ASC)で、
対象カラム IS NULLTrueなら1, Falseなら0
が返る。

昇順で並び替えだと 0→1 の順でソート、降順なら 1→0 の順でソートされるので、NULL の値が入ったレコードが一番最初 or 一番最後に来る。

参考・引用

https://dev.mysql.com/doc/refman/5.6/ja/working-with-null.html

GitHubで編集を提案

Discussion