Сортировка в 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

Вы можете сделать сортировку, как это

  1. Сортировать по первым 2 символам
  2. Затем перечислите записи, имеющие последние 2 символа LC
  3. Затем сортировать по последним 2 символам в целом
 ORDER BY подстрока (раздел, 1, 2), 
          подстрока (раздел, 3, 2)  'LC',
          подстрока (раздел, 3, 2)
Другие вопросы по тегам