menu

ORDER BY時に特定のレコードを先頭にしてソートする方法

公開日:2018年11月27日 カテゴリー:DB, MySQL, PostgreSQL

データベースから値を取得する際、昇順・降順の指定をして取得しますが、
特定のレコードだけ先頭、または最後に並べたい事が多々あります。

その場合「ORDER BY カラム名 = 値 ASC」を指定することで、
任意のレコードを先頭に並べることが可能です。

サンプル

このような会員(member)テーブルあるとします

id name
1 川田
2 三沢
3 藤波
4 平田

・idの昇順(1→4)に並べると

SELECT * FROM member ORDER BY id ASC

id name
1 川田
2 三沢
3 藤波
4 平田

・idの降順(4→1)に並べると

SELECT * FROM member ORDER BY id DESC

id name
4 平田
3 藤波
2 三沢
1 川田

・【本題】2と4を先頭に並べると

SELECT * FROM member ORDER BY id = 2 DESC, id = 4 DESC, id ASC

id name
2 三沢
4 平田
1 川田
3 藤波

※ 最後に並べる場合は、ASCを指定します

並び順をシステムで制御したい場合は、
特定のレコードだけ先に処理したい場合には、
この方法を利用することで対応が可能では無いでしょうか。

☆☆ウィズテクノロジーでは、大阪、東京を中心としたシステム開発を行っております
システムのご相談はもとより、一緒に働くエンジニアもお待ちしております。☆☆