我正试图得到这个结果。

MDT 1
MDT 2
MDT 3
MDT 11
MDT 44

但是,这些值是按字母顺序排列的,所以123在2之前。
例子:
MDT 1
MDT 11
MDT 156
MDT 2
MDT 3
MDT 303
MDT 44

等等。
我正在使用这个代码,但它似乎不起作用。
SELECT * FROM file ORDER BY ABS(ID) ASC

我该怎么解决?

最佳答案

如果您的id总是包含前缀MDT,那么您可以使用它,根据您的要求进行排序:

SELECT * FROM File
ORDER BY CAST(replace(ID, 'MDT ', '') AS UNSIGNED) ASC

SQLFiddle demo

08-26 11:55