SQLにて列内のソート順の変更(word: IN, FILED)
ちょっと知れたので、メモ(postgreSQL)。
table name 'aiueo'
c0 | c1
_________
0 | hagehage
1 | higehige
2 | fugefuge
3 | hegehege
4 | hogehoge
みたいなテーブルがあった時に、c0の順番通りに表したいならば、
SELECT * FROM aiueo ORDER BY c0 ASC
とかで良い(順番逆にするならASC->DESC)。
順番を0,1,2,3,4じゃなくて、0,2,1,4,3とかしたい時は、
SELECT * FROM aiueo WHERE c0 IN (0, 2, 1, 4, 3) ORDER BY FIELD(c0, 0, 2, 1, 4, 3)
とすると、こちらで指定した0,2,1,4,3の順で返してくれる。WHERE文(句?)でIN句を書く必要があるのかはよく分からない。自分の環境だとWHERE文が無くても大丈夫だが、参考サイトの人たちは書いている。SQLの言語かバージョンの違いなのだろうか。今のところ私には分からない。
参考サイト:
日々の覚書: WHERE .. IN (..)のリストの順番でソートするORDER BY FIELDの仕組み
where句のINの並び順で結果をsortしたいときはORDER BY FIELDを使う - こんにちはこんにちはmonmonです!