Не мислех, че това е възможно, но намерих запис в блога тук това изглежда прави нещата, които търсите:
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
.