Сортировка в MySQL определенным образом в одном столбце
Итак, у меня есть данные, где один из столбца (раздела) содержит следующее:
A1LB
A1LC
A1RC
A2LB
A2LC
A2RC
B1LB
B1LC
но я хочу, чтобы данные выглядели так:
A1LC
A1LB
A1RC
A2LC
A2LB
A2RC
B1LC
B1LB
Я пробовал "ЗАКАЗАТЬ ПО СЛУЧАЮ КОГДА, когда раздел, как%LC" ТОГДА 1 еще 2 КОНЕЦ ", но он выходит со всеми LC сверху
A1LC
A2LC
B1LC
B2LC
A1LB
A1RC
A2LB
A2RC
B1LB
B1RC
как я могу сделать это, не имея все ЛК сверху, но в том порядке, в котором я хочу, чтобы это было?
3 ответа
Решение
Похоже:
ORDER BY substring(section, 1, 3), substring(section, 4, 1) desc
Я думаю, вам нужно составить таблицу {LC -> 1, LB -> 2, RC -> 3}. Вы можете попробовать что-то вроде этого:
CREATE TABLE map (ky VARCHAR(2), ord TINYINT, PRIMARY KEY(ky,ord))
INSERT INTO map VALUES ('LC', 1), ('LB', 2), ('RC', 3)
SELECT col
FROM table
JOIN map ON RIGHT(col, 2) = map.ky
ORDER BY LEFT(col, 2) ASC, map.ord DESC
Вы можете сделать сортировку, как это
- Сортировать по первым 2 символам
- Затем перечислите записи, имеющие последние 2 символа
LC
- Затем сортировать по последним 2 символам в целом
ORDER BY подстрока (раздел, 1, 2), подстрока (раздел, 3, 2) 'LC', подстрока (раздел, 3, 2)