Mysql
 sql >> Database >  >> RDS >> Mysql

Ordinamento in base all'ordine dei valori in una clausola SQL IN()

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.