在一列中以特定方式在 MySQL 中排序

Sorting in MySQL in a specific manner in one column

所以我有一个数据,其中一列(部分)包含以下内容:
A1LB
A1LC
A1RC
A2LB
A2LC
A2RC
B1LB
B1LC

但我希望数据看起来像这样:
A1LC
A1LB
A1RC
A2LC
A2LB
A2RC
B1LC
B1LB

我试过了 "ORDER BY CASE WHEN section like %LC" 然后 1 其他 2 结束” 但它与所有 LC 一起出现在顶部
A1LC
A2LC
B1LC
B2LC
A1LB
A1RC
A2LB
A2RC
B1LB
B1RC

如果没有将所有 LC 放在最上面但按照我想要的顺序,我怎么能这样做呢?

你可以这样排序

  1. 按前 2 个字符排序
  2. 然后列出最后 2 个字符为 LC
  3. 的记录
  4. 然后一般按最后2个字符排序
 ORDER BY substring(section, 1, 2), 
          substring(section, 3, 2)  'LC',
          substring(section, 3, 2)

我认为您需要制作一个 table 映射 {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

看起来像:

ORDER BY substring(section, 1, 3), substring(section, 4, 1) desc