SQL 任意の順番でソートする方法

name
Hirayama
Akiba
Sasaki
Yokoyama
NameTbl

上記のようなテーブルNameTblがあったとする。ここで ORDER BY 句を指定するとアルファベット順にソートすることは容易に出来る。昇順や降順で並び替える場合は以下のSQLで事足りる。

SELECT name FROM NameTbl ORDER BY name ASC;  --昇順
SELECT name FROM NameTbl ORDER BY name DESC; --降順
name
Akiba
Hirayama
Sasaki
Yokoyama
NameTbl(昇順)

ここで任意の順番に並べ替えたいとする。例えば以下のように並べ替えたい場合はどうすればよいのか?

name
Sasaki
Akiba
Yokoyama
Hirayama
NameTbl(任意の順)

答えはCase式を使えばよい。

SELECT name FROM NameTbl
  ORDER BY CASE name
             WHEN 'Sasaki'   THEN 1
             WHEN 'Akiba'    THEN 2
	     WHEN 'Yokoyama' THEN 3
	     WHEN 'Hirayama' THEN 4
             ELSE NULL END;

コメント