MySQL. Как отсортировать таблицу по полю enum?


Задача с сортировкой таблицы по полю enum кажется простой, пока с ней не столкнешься.. 🙂

Хотя, на самом деле, она и далее может казаться простой — достаточно знать несколько вариантов решения проблемы. Ниже приведены несколько примеров сортировки таблицы по полю типа enum в зависимости от поставленных задач.

1. Нужно отсортировать запрос в алфавитном порядке колонки enum.

SELECT * FROM table ORDER BY CONCAT(FIELD_WITH_ENUM);

2. Требуется получить выборку, сохранив при этом определенный порядок поля. Например, сначала новые заказы, потом те, что находятся в обработке, а в конце — обработанные.

SELECT 
    * 
FROM 
    table 
ORDER BY 
     FIELD(FIELD_WITH_ENUM, 'new_order', 'in_work_order', 'success_order');

3. Нужно получить выборку, в которой в начале идут новые заказы, далее идут заказы с любым статусом, кроме «Завершенные» — «В обработке», «В доставке», «Ожидают выдачи» и т.д., а в конце — «Завершенные». При этом выборка должна быть отсортирована по имени.

SELECT 
     * 
FROM 
     table 
ORDER BY 
     CASE FIELD_WITH_ENUM
          WHEN 'new_order' THEN 3
          WHEN 'success_order' THEN 1
     ELSE 2
     END, 
name
,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *