Не мислех, че това е възможно, но намерих запис в блога тук това изглежда прави нещата, които търсите:
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 във втория аргумент, даден му, така че за първия случай по-горе, id от 7 е на позиция 1 в набора, 2 на 2 и така нататък - mysql вътрешно работи нещо като
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
след това нарежда по резултатите от FIND_IN_SET .