提问者:小点点

Order by查询返回不同的排序


按查询排序返回不同的排序,为什么?

SELECT class FROM table WHERE class != "" ORDER BY class ASC

结果:

411101000010

*411102000010* (err)

411101000000

411101000020

411101000050 

为什么?


共1个答案

匿名用户

我假设您的类列是varchar,所以要对列类进行排序,您需要将其转换为int,方法是将其强制转换为int或使用这个技巧order by ABS(class)

SELECT class FROM table
ORDER BY CAST(class AS INT) ASC

处理字符串时使用单引号class!=''。SQL中一般不会使用双引号,但它依赖于您正在使用的数据库(MySQL同时接受单引号和双引号)。

未显式指定任何内容时,order by子句中的默认排序为asc。因此您可以省略order asc,因为它是默认值。