sql >> Base de Datos >  >> RDS >> Mysql

Ordenar por orden de valores en una cláusula SQL IN()

Use el FIELD() función:

SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])

CAMPO() devolverá el índice del primer parámetro que es igual al primer parámetro (que no sea el primer parámetro en sí).

CAMPO('a', 'a', 'b', 'c')

devolverá 1

CAMPO('a', 'c', 'b', 'a')

devolverá 3

Esto hará exactamente lo que desea si pega las identificaciones en IN() cláusula y el FIELD() funcionan en el mismo orden.