Ich hätte das nicht für möglich gehalten, aber einen Blogeintrag hier gefunden das scheint die Art von Sache zu tun, nach der Sie suchen:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
gibt unterschiedliche Ergebnisse zu
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
gibt die Position von id
zurück im zweiten übergebenen Argument, also für den ersten Fall oben, id
von 7 ist an Position 1 in der Menge, 2 an 2 und so weiter - mysql rechnet intern so etwas wie
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
ordnet dann nach den Ergebnissen von FIND_IN_SET
.