Use o
FIELD()
função:SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
CAMPO() retornará o índice do primeiro parâmetro que é igual ao primeiro parâmetro (diferente do próprio primeiro parâmetro). CAMPO('a', 'a', 'b', 'c') vai retornar 1
CAMPO('a', 'c', 'b', 'a') vai voltar 3
Isso fará exatamente o que você deseja se você colar os ids no
IN() cláusula e o FIELD() funcionam na mesma ordem.