Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sortieren nach der Reihenfolge der Werte in einer SQL IN()-Klausel

Verwenden Sie MySQLs FIELD() Funktion:

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

FIELD() gibt den Index des ersten Parameters zurück, der gleich dem ersten Parameter ist (anders als der erste Parameter selbst).

FIELD('a', 'a', 'b', 'c')

wird 1 zurückgeben

FIELD('a', 'c', 'b', 'a')

wird 3 zurückgeben

Dies wird genau das tun, was Sie wollen, wenn Sie die IDs in IN() einfügen -Klausel und das FIELD() Funktion in der gleichen Reihenfolge.