【MySQL】昇順にソートしたいけどNULL行は後ろにもってきたい
問題
SQLで、結果をソートするときに、NULLの行は後ろにもっていくとか、できますか?
答え
一応できる。
select * from T order by ソートしたい列 is null, ソートしたい列;
ソートしたい列 is null が true なら下位に、falseなら上位にきて、それぞれの集合の中で、ソートしたい列の順に並ぶ。
ifnull 関数を使うと以下の書き方も可能。
数値なら、
select * from T order by ifnull(ソートしたい列, 99999);
英数文字列なら、
select * from T order by ifnull(ソートしたい列, "ZZZZZZZZ");
NULL以外にも、0を下に、非0を上にとか、7で割った余りが0は下にとか、いろんなことが可能ではある。
インデックスが効かなさそうなので注意。
コメント