ORDER BY FIELDでSELECT結果を任意の順番にソートする

今日調べて初めて知ったことをメモ。

例えば、

f:id:ogadev46:20160810182144p:plain

というデータがあったとして、
「表示をこんぶ⇒梅⇒シーチキンの順にしてくれ~!」
と言われた場合。

MySQLでは

SELECT * FROM チーム結果TBL
ORDER BY field(チーム名,'こんぶチーム','梅チーム','シーチキンチーム');

と書けばOKだそうです~!
無事望みの挙動となりました。便利~。

上司からは最初「CASE文とかでできるんじゃない?」と言われていたので、
一応そちらも調べました。

SELECT * FROM チーム結果TBL 
ORDER BY CASE チーム名
WHEN 'こんぶチーム' THEN 1
WHEN '梅チーム' THEN 2
WHEN 'シーチキンチーム' THEN 3
ELSE 0 END

でOKのようです。
(ごめんなさいまだ試してません)

開発に必要なのはつくづく、検索能力だと思い知らされる毎日。。。
(もちろん頭の中に引き出しが沢山あることは大切ですが!!)
ちゃんと記事にまとめてくれている先人たちに感謝・・・◎


<参考>

MySQLで任意の順番でソートする : Nacky - Snowland.net

[SQL]任意のソートをCASE文で記述する方法 | プログラミング | アイスケット | 神奈川県相模原市の成功できるホームページ制作・SEO・運用を提供する会社