Сортировать в 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
Другие вопросы по тегам