除了Asc/Desc,还有其他方法可以使用Mysql Order By吗?

Besides Asc/Desc, Any other way to use Mysql Order By?

对不起,我没能正确地提出我的问题,现在我试着解释一下我想问的问题。

例如,我在 mysql table 中有 15 行具有唯一编号(主键 ID 除外)

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

现在如果我使用

SELECT * FROM info order by uniquenumber asc;

我会得到类似

的结果
1,10,11,12,13,14,15,2,3,4,5,6,7,8,9 

随便我

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

我如何在 mysql 中执行此操作?谢谢

将列设为 mysql data-type Integer(或任何其他数字 data-type),这将解决问题。

由于字符串排序,排序依据以这种方式表现。

参考:http://dev.mysql.com/doc/refman/5.7/en/numeric-types.html

试试这个。将类型为 varchar(255) 的唯一数字转换为 INT 类型

SELECT * FROM info order by CAST(uniquenumber AS INT) ASC

有一些方法可以做到这一点,具体取决于您的工作愿望,最简单的是对值进行操作(例如 +0),这会按顺序将 varchar 转换为数值,

SELECT * FROM info ORDER BY uniquenumber+ 0 ASC

你可以通过一些数值函数进行转换

SELECT * FROM info ORDER BY ABS(uniquenumber) ASC

SELECT * FROM info ORDER BY CAST(uniquenumber as SIGNED INTEGER) ASC

哟我使用 LPAD 功能 here description

如果您假设您的 table 应该有 non-numeric 数据(因为是 varchar(255)),您应该进行任何子字符串转换 (See here)。例如 AAA111、AAA112 或 111AAAA、112AAAA 等。

select uniquenumber,substring(uniquenumber, X, Y) as param1CONVERT(SUBSTRING(uniquenumber, X, Y),UNSIGNED INTEGER) AS param2 from info order by param1,param2;

看到这个问题Shorting Varchar field numerically