Użyj FIELD()
funkcja:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
FIELD()
zwróci indeks pierwszego parametru, który jest równy pierwszemu parametrowi (innemu niż sam pierwszy parametr).
FIELD('a', 'a', 'b', 'c')
zwróci 1
FIELD('a', 'c', 'b', 'a')
zwróci 3
To zrobi dokładnie to, czego chcesz, jeśli wkleisz identyfikatory do IN()
klauzula i FIELD()
działają w tej samej kolejności.