Brug MySQL's FIELD()
funktion:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
FIELD()
returnerer indekset for den første parameter, der er lig med den første parameter (bortset fra selve den første parameter).
FIELD('a', 'a', 'b', 'c')
vil returnere 1
FIELD('a', 'c', 'b', 'a')
vil returnere 3
Dette vil gøre præcis, hvad du vil, hvis du indsætter id'erne i IN()
klausulen og FIELD()
funktion i samme rækkefølge.