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.