SQLのORDER BYにCASE式が使えてちょっと嬉しかったお話

SQLで検索結果をソートするときってorder by使うよね。でもさ、単純に大きい順とか五十音順とかじゃなくて、ひと工夫したいときってあるじゃないですか。

たとえば、国名のリストをアルファベット順でソートして一覧表示するけど、利便性を考えて日本は一番上に表示したい、とかね。

で、まあ、そういうときは表示順のソートキーを別項目として持ったりするのがいいんだろうなって思ってたんだけど、最近シンプルな解決策を教わりました。

select
  country_name
from
  t_country
order by
  case country_name when 'Japan' then 1 else 2 end,
  country_name

ソートの第1条件として'Japan'かどうかを判断して、第2条件として国名を見る、という方法。
やー、SQLは奥が深いな。