按查询排序返回不同的排序,为什么?
SELECT class FROM table WHERE class != "" ORDER BY class ASC
结果:
411101000010
*411102000010* (err)
411101000000
411101000020
411101000050
为什么?
我假设您的类列是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,因为它是默认值。