Ik dacht dat dit niet mogelijk was, maar vond een blogbericht hier dat lijkt te doen wat u zoekt:
SELECT id FROM table WHERE id in (7,2,5,9,8)
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
geeft verschillende resultaten aan
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
geeft de positie van id
. terug in het tweede argument dat eraan wordt gegeven, dus voor het eerste geval hierboven, id
van 7 is op positie 1 in de set, 2 op 2 enzovoort - mysql werkt intern zoiets als
id | FIND_IN_SET
---|-----------
7 | 1
2 | 2
5 | 3
orden vervolgens op de resultaten van FIND_IN_SET
.