PostgreSQLでnullをソートする


明日からシルバーウィークですねっ。
バーベキュー行ったり、仕事したりしながら、基本的にダラダラ過ごしていると思われます。


それはさておき、SQLでデータを抽出する際、ORDER BY句でソートするカラムにNULLが入っていることもあります。
例えば、

SELECT price, name FROM fruit ORDER BY price;
とした時に、
price name
100 みかん
200 りんご
400 ぶどう
いちご
と返ってくるテーブルがあるとします。
この時、いちごは値段をつけていないけど、一番先頭に表示するには、以下のSQL文で抽出できます。
SELECT price, name FROM fruit ORDER BY (price IS NULL) DESC, price;
price name
いちご
100 みかん
200 りんご
400 ぶどう
trueはfalseより大きいとなるので、price IS NULLをDESCとすることでいちごが先頭に来たのち、priceの昇順で抽出されます。
Tag

コメントを残す