例如,使用以下查询
SELECT 指标 FROM 计划 ORDER BY 指标 ASC;
如下表
+-----------+ | indicator | +-----------+ | a | | 4 | | b | | 2 | | 1 | | 8 | | s | | 11 | | k | | e | +-----------+
我得到字母顺序
+-----------+ | indicator | +-----------+ | 1 | | 11 | | 2 | | 4 | | 8 | | a | | b | | e | | k | | s | +-----------+
我真正想要的是这个?
+-----------+ | indicator | +-----------+ | 1 | | 2 | | 4 | | 8 | | a | | b | | e | | k | | s | | 11 | +-----------+
编辑:数字以 36 为基数
最佳答案
您的数字由 mysql 以文本形式存储,因此您需要将值转换为数字,以便 mysql 能够将其按数字排序。
在mysql中conv()函数可用于在基数之间转换数字。将数字转换为基数 10 并将其解释为数字(conv() 返回结果的字符串表示形式):
SELECT indicator FROM schedules ORDER BY CONV(indicator, 36, 10) + 0 ASC;
警告:mysql 将无法使用索引来加速排序操作。如果您有大量记录,请考虑存储十进制数字或使用计算列来为您进行计算。
关于mysql - 如何按 10 以外的基数中的一列数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325516/