Använd MySQL:s FIELD()
funktion:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
FIELD()
returnerar indexet för den första parametern som är lika med den första parametern (förutom den första parametern själv).
FIELD('a', 'a', 'b', 'c')
kommer att returnera 1
FIELD('a', 'c', 'b', 'a')
kommer att returnera 3
Detta kommer att göra exakt vad du vill om du klistrar in ID:en i IN()
satsen och FIELD()
fungerar i samma ordning.