ORDER BY時に特定のレコードを先頭にしてソートする方法
データベースから値を取得する際、昇順・降順の指定をして取得しますが、
特定のレコードだけ先頭、または最後に並べたい事が多々あります。
その場合「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を指定します
並び順をシステムで制御したい場合は、
特定のレコードだけ先に処理したい場合には、
この方法を利用することで対応が可能では無いでしょうか。
☆☆ウィズテクノロジーでは、大阪、東京を中心としたシステム開発を行っております
システムのご相談はもとより、一緒に働くエンジニアもお待ちしております。☆☆