これが可能だとは思いませんでしたが、ここにブログエントリ が見つかりました。 それはあなたが求めているタイプのことをしているようです:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
に異なる結果が得られます
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");
FIND_IN_SET
id
の位置を返します 与えられた2番目の引数では、上記の最初のケースでは、id
7の位置はセットの1の位置にあり、2は2の位置にあり、以下同様です。mysqlは内部的に次のように動作します
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
次に、FIND_IN_SET
の結果で並べ替えます 。