【问题标题】:MySQL number ordering [duplicate]MySQL数字排序[重复]
【发布时间】:2013-03-31 23:51:55
【问题描述】:

假设我有表numbers 字段num INT

参赛作品:

364
0
123
0
321
4215
12138

我想对它们进行 ASC 排序。问题是我希望将零留在底部。

我想要的差不多

SELECT num FROM number WHERE num != 0 ORDER BY num ASC
SELECT num FROM number WHERE num = 0

这有可能以某种方式在 1 个单一查询中完成吗?

我想要实现的是:

123
321
364
4215
12138
0
0

我不知道这是否可能是问的原因。谢谢。

【问题讨论】:

    标签: mysql sql sorting numbers


    【解决方案1】:
    SELECT num FROM number ORDER BY IF(num=0,1,0),num;
    

    【讨论】:

      【解决方案2】:

      在order by子句中加入这个条件,

      ORDER BY (num = 0) ASC, num ASC
      

      或者你可以默认省略ASC

      ORDER BY (num = 0), num
      

      输出

      ╔═══════╗
      ║  NUM  ║
      ╠═══════╣
      ║   123 ║
      ║   321 ║
      ║   364 ║
      ║  4215 ║
      ║ 12138 ║
      ║     0 ║
      ║     0 ║
      ╚═══════╝
      

      【讨论】:

        猜你喜欢
        • 2017-06-03
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 2021-12-24
        • 2012-04-16
        • 1970-01-01
        相关资源
        最近更新 更多