我桌上有这一栏有架子的名字
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-8
和O2-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/