Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ordenação pela ordem dos valores em uma cláusula SQL IN()


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.