Рассмотрим короткий пример, как сохранить порядок выборки MySQL при запросе с условием IN.
Итак, допустим мы имеем запрос:
SELECT * from users WHERE id IN(2, 5, 7, 3, 15, 4);
MySQL, вероятнее всего вернёт выборку в отсортированном по полю id виде или же в каком-то третьем, зависимо от настроек.
Чтобы результаты были именно в порядке 2, 5, 7, 3, 15, 4 используйте следующий запрос:
SELECT * from users WHERE id IN(2, 5, 7, 3, 15, 4) ORDER BY FIELD(id, 2, 5, 7, 3, 15, 4);
Обратите внимание на конструкцию ORDER BY — именно она обеспечит нам ожидаемый результат.