Използвайте FIELD()
функция:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
ПОЛЕ()
ще върне индекса на първия параметър, който е равен на първия параметър (различен от самия първи параметър).
FIELD('a', 'a', 'b', 'c')
ще върне 1
FIELD('a', 'c', 'b', 'a')
ще върне 3
Това ще направи точно това, което искате, ако поставите идентификаторите в IN()
клауза и FIELD()
функционират в същия ред.