Nemyslel jsem si, že je to možné, ale našel jsem příspěvek na blogu zde zdá se, že to dělá to, co hledáte:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
poskytne jiné výsledky pro
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
vrátí pozici id
ve druhém argumentu, který je mu přidělen, takže v prvním případě výše id
of 7 je na pozici 1 v sadě, 2 na 2 a tak dále - mysql interně funguje něco jako
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
poté seřadí podle výsledků FIND_IN_SET
.