MySQLのselectで任意の順番にソートする
MySQLで任意の順番にソートをするにはfieldを使う
id | name |
1 | 一郎 |
2 | 二郎 |
3 | 三郎 |
4 | 四郎 |
5 | 五郎 |
6 | 六郎 |
7 | 七郎 |
8 | 八郎 |
9 | 九郎 |
というテーブルがあるとする。
select * from users;
とすれば、
id |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
という一覧が返ってくる
select * from users order by field(id, 4,5,6);
とすると
id |
1 |
2 |
3 |
7 |
8 |
9 |
4 |
5 |
6 |
という結果が返ってくる。
なぜか、fieldで指定していないIDが最初に表示され、最後にfieldで指定したレコードが順番に並ぶようだ。
希望としては
4,5,6が最初に表示されて、その後に1,2,3,7…と出てほしい。
これを実現するには
select * from users order by field(id, 6,5,4) desc, id;
とする