PostgreSQLでnull込みのデータでソートする

こんにちは、さるまりんです。

PostgreSQLの小ネタです。

PostgreSQLではSELECTする際にNULLS FIRSTNULLS LASTNULLのデータを並び替えたときに最初にするか最後にするかを指定することができます。

例でみてみます。

型がint(整数)のカラムvalを一つだけ持つテーブルsimple_intに次のようなデータが入っています。(以下はvalの値です。)

1
NULL
5
3
NULL
4
2

このテーブルのデータをvalDESC(降順)でSELECTすると

SELECT * FROM simple_int
ORDER BY a DESC;

次の順でデータがとれます。

NULL
NULL
5
4
3
2
1

NULLが先にきていますね。

これをNULLを後にしたい場合はこうします。

SELECT * FROM simple_int
ORDER BY a DESC NULLS LAST;

取れるデータはこうです。

5
4
3
2
1
NULL
NULL

NULLの扱いって何をどう作っているかで変わってきますよね。

そんな時にこれが使えると便利かな。

ちょっとしたことですが今回使うことがあったので覚えておくためにここに置いておきます。

読んでくださってありがとうございました。

それではまた!