Как отсортировать mysql таким образом

175
13 апреля 2017, 17:08

Есть данные в базе:

id, title
1 - заголовок
2 - заголовок 2
3 - заголовок 3

Как отсортировать таким образом, чтобы получить:

2 - заголовок 2
1 - заголовок 
3 - заголовок 3

К сожалению, ASC и DESC в данном случаи не подходят.
Подскажите, куда копать?

Answer 1

Добавляете отдельный столбец в котором указываете индексы для нужного порядка сортировки. Сортируете, при выводе, по нему.

id, title, sortOrder
1, заголовок, 2
2, заголовок 2, 1
3, заголовок 3, 3

Запрос:

select * from table order by sortOrder
Answer 2

Попробуйте так:

select id, title
from table
order by case title when "Заголовок 2" then 1
                    when "Заголовок" then 2
                    else 3 end

В результате сначала пойдут первыми строки с "Заголовком 2", потом строки с "Заголовком", потом с оставшимся "Заголовком 3".

Пример на sqlfiddle.

READ ALSO
MYSQL объединение UNION по ID

MYSQL объединение UNION по ID

Как сделать подобную выборку, получив уникальный ID?

182
SQL запрос с использованием JOIN

SQL запрос с использованием JOIN

Даны две таблицы со столбцами

162
Как спроектировать БД и поиск с фильтром для доски объявлений?

Как спроектировать БД и поиск с фильтром для доски объявлений?

Подскажите хорошие практики для проектирования БД и дальнейшего поиска по фильтрам

182