Non pensavo fosse possibile, ma ho trovato un articolo di blog qui che sembra fare il tipo di cosa che stai cercando:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
darà risultati diversi a
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
restituisce la posizione di id
nel secondo argomento ad esso dato, quindi per il primo caso sopra, id
di 7 è in posizione 1 nel set, 2 in 2 e così via - mysql internamente funziona qualcosa come
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
quindi ordini in base ai risultati di FIND_IN_SET
.