Сортировать в MySQL без ASC и Desc
У меня есть таблица 'book_history' с полем 'status'
So there are three values for the field 'status' => 0,1,2
Теперь я хочу запросить его по порядку - я знаю, порядок по ASC и порядок по Desc там. Но как я действительно хочу это
select * from book_history order by status 1,0,2
Я также проверил заказ к тому времени. Но я не смог сделать свой запрос.
Таким образом, конечный результат будет - сначала он должен перечислить статус =1, затем статус =0, а затем статус ='2'
Любая помощь.
Спасибо,
Kimz
5 ответов
Вы можете использовать функцию FIELD()
SELECT
*
FROM
book_history
ORDER BY FIELD(`status`, 1, 0, 2)
Используйте запрос ниже, чтобы навести порядок в запросе:
select * from book_history
ORDER BY FIELD (status,1,0,2);
Для получения дополнительной информации, если есть больше значений и вы сохраняете значения сверху и остальные значения после этого, вы можете использовать запрос ниже:
select * from book_history
ORDER BY FIELD (status,2,0,1) desc;
Вы можете использовать ЗАКАЗ ПО ПОЛЕ:
SELECT * FROM book_history ORDER BY FIELD(status, 1,0,2)
Используйте выражение case, чтобы получить ключ заказа:
select *
from book_history
order by
case status
when 1 then 100 -- any small value would do here
when 0 then 200 -- any medium value would do here
when 2 then 300 -- any big value would do here
end;
Еще одна альтернатива с UNION
:
select * from book_history where status = 1
UNION
select * from book_history where status = 0
UNION
select * from book_history where status = 2