Usa FIELD()
funzione:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
FIELD() restituirà l'indice del primo parametro che è uguale al primo parametro (diverso dal primo parametro stesso).
FIELD('a', 'a', 'b', 'c')
restituirà 1
FIELD('a', 'c', 'b', 'a')
restituirà 3
Questo farà esattamente quello che vuoi se incolli gli ID in IN() clausola e il FIELD() funzione nello stesso ordine.