SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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は下にとか、いろんなことが可能ではある。

インデックスが効かなさそうなので注意。

関連するメモ

コメント