Mysql
 sql >> Base de données >  >> RDS >> Mysql

Trier par l'ordre des valeurs dans une clause SQL IN()

Utilisez le FIELD() fonction :

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

CHAMP() renverra l'index du premier paramètre qui est égal au premier paramètre (autre que le premier paramètre lui-même).

CHAMP('a', 'a', 'b', 'c')

renverra 1

CHAMP('a', 'c', 'b', 'a')

renverra 3

Cela fera exactement ce que vous voulez si vous collez les identifiants dans le IN() clause et le FIELD() fonctionnent dans le même ordre.