按查询排序返回不同的顺序

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,因为它是默认顺序。