SQLのORDERで特定の値だけ順序を後にしたい

 SQLでORDERをかける時、特定の値だけ順序を変えたい時があります。
 会社名でソートするけれど特定の会社はトップに持ってきたいとか、価格でソートするけれどNULLなしのカラムで価格データなしに0が入っている、といった時です(DB設計がそもそもおかしいだろう、というのは全くその通りだと思いますが、そういうおかしいDBって一杯あります・・)。
 で、SQL小ネタですが、

ORDER BY CASE PRICE WHEN 0 THEN 2 ELSE 1 END , PRICE

 みたいにすると、PRICEのASCでソートするけれど、0だけは一番最後に持ってくるようになります。0とそれ以外でまずソートし、それから価格でソートしているからです。
 以上、小ネタでした。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする