Блог Михаила Крамера. PHP и JS

MySQL, сортировка в произвольном порядке (in и сортировка)

Задача такая: выдать все строки таблицы с id, входящим во множество (13, 15, 14, 29, 11), и к тому же именно в таком порядке. Недавно обнаружил, что в MySQL есть оператор, решающий именно эту задачу

Для этого используется функция find_in_set:

select * from records where id in (13, 15, 14, 29, 11) order by find_in_set(id, "13,15,14,29,11")

Важно! Второй аргумент find_in_set не должен содержать пробелов

P.S. Только закончив этот пост, нашёл ещё одну функцию для этих целей в этой замечательной статье:

SELECT * FROM articles ORDER BY FIELD(a_season, "весна","лето","осень","зима")
Ваш комментарий
Комментарии