【问题标题】:Order by query is returning different ordering [closed]按查询排序返回不同的排序[关闭]
【发布时间】:2021-03-29 14:13:14
【问题描述】:

Order by query 返回不同的排序,为什么?

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

结果:

411101000010

*411102000010* (err)

411101000000

411101000020

411101000050 

为什么?

【问题讨论】:

  • class 列是 VARCHAR 还是 NUMERIC?有些值的开头可能有空格。

标签: php mysql codeigniter


【解决方案1】:

我假设您的 class 列varchar,因此要对列类进行排序,您需要通过将其转换为 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 顺序,因为它是默认顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多