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;

とする

MySQL,SQL

Posted by GENDOSU