【问题标题】:Using MySql, can I sort a column but have 0 come last?使用 MySql,我可以对列进行排序但最后有 0 吗?
【发布时间】:2011-03-08 23:53:33
【问题描述】:

我想按一列整数升序排序,但我希望 0 排在最后。无论如何在MySql中这样做?

【问题讨论】:

    标签: sql mysql sql-order-by


    【解决方案1】:
    SELECT * FROM your_table ORDER BY 0.1/your_field;
    

    【讨论】:

      【解决方案2】:

      您可以执行以下操作:

      SELECT value, IF (value = 0, NULL, value) as sort_order
      FROM table
      ORDER BY sort_order DESC
      

      Null 值将在列表的下方。

      【讨论】:

        【解决方案3】:

        下面的查询应该可以解决问题。

        (SELECT * FROM table WHERE num!=0 ORDER BY num) UNION (SELECT * FROM table WHERE num=0)
        

        【讨论】:

          【解决方案4】:

          您可能想尝试以下方法:

          SELECT * FROM your_table ORDER BY your_field = 0, your_field;
          

          测试用例:

          CREATE TABLE list (a int);
          
          INSERT INTO list VALUES (0);
          INSERT INTO list VALUES (0);
          INSERT INTO list VALUES (0);
          INSERT INTO list VALUES (1);
          INSERT INTO list VALUES (2);
          INSERT INTO list VALUES (3);
          INSERT INTO list VALUES (4);
          INSERT INTO list VALUES (5);
          

          结果:

          SELECT * FROM list ORDER BY a = 0, a;
          
          +------+
          | a    |
          +------+
          |    1 |
          |    2 |
          |    3 |
          |    4 |
          |    5 |
          |    0 |
          |    0 |
          |    0 |
          +------+
          8 rows in set (0.00 sec)
          

          【讨论】:

          • 你能在 ORDER BY 中加入任何布尔条件吗?
          • @JSmaga:你可以使用任何表达式。见ORDER BYsyntax here:[ORDER BY {col_name | expr | position}
          • 非常感谢。很棒
          • @Daniel Vassallo 很好。但它说什么?以及它是如何工作的?
          • @DanielVassallo 这确实有效。但是这个工作原理是什么?
          猜你喜欢
          • 2018-11-19
          • 2018-07-01
          • 2022-08-16
          • 2017-09-09
          • 2017-12-24
          • 1970-01-01
          • 2018-06-19
          • 1970-01-01
          • 2016-01-19
          相关资源
          最近更新 更多