SQLの小技(1)_MySQLのORDER BY
やりたいこと
MySQL の ORDER BYで、下記の並び替えをしたい
- NULLを末尾に並び替え
- 任意の値を末尾に並び替え
- 指定した任意の順番に並び替え(並び順を明示)
Excelでの並び替えと似ていますね。
背景
メール配信でリストを作成していました。
特定の項目を降順に並び替えたいときに、ORDER BY 列 DESC
と書くとNULLが先頭になりました。これを末尾に並び替えしたいと思います。
SQL
ORDER BY 列 IS NULL ASC
ORDER BY FIELD(列,'松','竹','梅') ASC
松竹梅の順で表示したい
ASCは省略可
1~3の組合せ
ORDER BY pos_plan IS NULL, -- NULLを末尾に並び替え pos_plan = 'hoge', -- 任意の値を末尾に並び替え FIELD(pos_plan, '松', '竹', '梅') -- 指定した任意の順番に並び替え(並び順を明示)
以上で意図した通りに並び替えできました。結果を貼った方がわかりやすいのですが、 SQL結果をそのまま公開できないため、結果は省略します。
何か方法を考えた方が良さそうですね。
蛇足
初めは「編集 見たまま」で書いていましたが、Markdownで書くことにしました。 MacとWIndowsでそれぞれショートカットを覚えるくらいならMarkdownで書いた方が早いと感じたからです。
このことも後日まとめようと思います。
以上です。