我桌上有这一栏有架子的名字

M2-8-3
N1-12-1
N1-3-8
N2-6-1
O1-11-3
O2-1-5
O2-10-1
O2-10-2
O2-10-6
O2-16-7
O2-17-6
O2-17-7
O2-4-2

当我按它的升序排序时,它会给出上面可见的结果,但是我如何编写查询以获得下面可见的结果
M2-8-3
N1-3-8
N1-12-1
N2-6-1
O1-11-3
O2-1-5
O2-4-2
O2-10-1
O2-10-2
O2-10-6
O2-16-7
O2-17-6
O2-17-7

不同之处在于N1-3-8O2-4-2

最佳答案

试试这个:

SELECT col
FROM yourTable
ORDER BY SUBSTRING_INDEX(col, '-', 1),
         SUBSTRING(SUBSTRING_INDEX(col, '-', -2),
                   1,
                   INSTR(SUBSTRING_INDEX(col, '-', -2), '-') - 1),
         SUBSTRING_INDEX(col, '-', -1)

这是brute force方法,其中ORDER BY子句中的三个术语都对应于连字符字符串的一部分。

关于mysql - MySQL按字母和数字按列排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41167768/

10-13 07:31