按查询排序返回不同的顺序
Order by query is returning different ordering
按查询排序返回不同的顺序,为什么?
SELECT class FROM table WHERE class != "" ORDER BY class ASC
结果:
411101000010
*411102000010* (err)
411101000000
411101000020
411101000050
为什么?
我假设您的 class 列 是 varchar
因此要对列 class 进行排序,您需要通过强制转换将其转换为 int作为 INT 或使用此技巧 ORDER BY ABS(class)
.
SELECT class FROM table
ORDER BY CAST(class AS INT) ASC
Demo
备注:
在处理字符串时使用单引号 class != ''
。 SQL中一般不使用双引号,但它取决于您使用的数据库(MySQL接受单引号和双引号)。
当未明确指定任何内容时,ORDER BY
子句中的默认顺序是 ASC
。因此您可以省略顺序 asc,因为它是默认顺序。
按查询排序返回不同的顺序,为什么?
SELECT class FROM table WHERE class != "" ORDER BY class ASC
结果:
411101000010
*411102000010* (err)
411101000000
411101000020
411101000050
为什么?
我假设您的 class 列 是 varchar
因此要对列 class 进行排序,您需要通过强制转换将其转换为 int作为 INT 或使用此技巧 ORDER BY ABS(class)
.
SELECT class FROM table
ORDER BY CAST(class AS INT) ASC
Demo
备注:
在处理字符串时使用单引号 class != ''
。 SQL中一般不使用双引号,但它取决于您使用的数据库(MySQL接受单引号和双引号)。
当未明确指定任何内容时,ORDER BY
子句中的默认顺序是 ASC
。因此您可以省略顺序 asc,因为它是默认顺序。