Программирование
»Order by в произвольном порядке
Век живи — век учись! В который раз в этом убедился. Надо было решить следующую задачу: есть в одной табличке, скажем table_name, некоторое поле, назовем его available. И есть возможные значения этого поля: 0, 1, 2. Предположим, что эти значения являются статусом наличия товара на складе: 0 — нет товара, 1 — есть в наличии, 2 — только под заказ. Необходимо вывести товар с сортировкой по полю available, но не в порядке возрастания или убывания его значений, а в произвольном, скажем в таком: 1, 2, 0. Т.е, сначала доступный товар, потом тот, что идет под заказ и последним — отсутствующий.
Вот простое, а главное, "стандартное" решение:
[where our_conditions_list]
order by field(available, 1, 2, 0)
Все, результат получен в более удобном виде для пользователя, ведь товар со статусом "В наличии" находиться на первых позициях, а не в средине, как если бы мы сортировали с помощью asc/desc.