除了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 param1
和 CONVERT(SUBSTRING(uniquenumber, X, Y),UNSIGNED INTEGER) AS param2 from info order by param1,param2;
看到这个问题Shorting Varchar field numerically
对不起,我没能正确地提出我的问题,现在我试着解释一下我想问的问题。
例如,我在 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 param1
和 CONVERT(SUBSTRING(uniquenumber, X, Y),UNSIGNED INTEGER) AS param2 from info order by param1,param2;
看到这个问题Shorting Varchar field numerically