Предположим есть таблица с некоторым полем статус, которое может принимать следующие значения: D, N, O, P, S. Таблица используется уже довольно давно и содержит кучу данных. К тому же есть куча функционал, привязанного в коде именно к этим значениям.
И тут возникает задача сделать вывод данных из таблицы в соответствии со значением статуса в следующем порядке: N, P, S, O, D. Есть ли варианты сделать это малой кровью?
Конечно есть.
Есть возможность использовать следующий код в условии ORDER:
ORDER BY CASE WHEN status = 'N' THEN 1 WHEN status = 'P' THEN 2 WHEN status = 'S' THEN 3 WHEN status = 'O' THEN 4 WHEN status = 'D' THEN 5 END
Таким образом для каждого статуса мы назначаем свой «вес» и уже сортируем по нему.
Пример вполне рабоспособен для MySQL. На других движках я думаю тоже проблем не будет.