😺
[MySQL]ORDER BY カラム名 IS NULL ASCでNULLが後ろにくる仕組み
はじめに
本記事は、筆者による理解の復習・確認やアウトプットの練習のために書いております。
間違った解釈等ございましたら、ご連絡いただけますと幸いです。
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 NULL
で True
なら1
, False
なら0
が返る。
昇順で並び替えだと 0→1 の順でソート
、降順なら 1→0 の順でソート
されるので、NULL の値が入ったレコードが一番最初
or 一番最後
に来る。
参考・引用
Discussion