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.