【问题标题】:Order by with case statement [duplicate]用case语句排序[重复]
【发布时间】:2015-08-20 13:17:50
【问题描述】:

我想像这样在ORDER BY clausule 中使用CASE 语句:

ORDER BY  
    CASE
        WHEN `Delivery`.`type` = 0 THEN `Delivery`.`quantity` ASC
        WHEN `Delivery`.`type` = 1 THEN `Delivery`.`quantity` DESC
    END

但我只能在END 之后使用ASC/DESC 关键字。

有解决办法吗?

【问题讨论】:

    标签: mysql sql-order-by


    【解决方案1】:

    您可以使用如下查询:

    SELECT columns FROM tables WHERE condition 
    ORDER BY  
    CASE    
      WHEN `Delivery`.`type` = 0 THEN `Delivery`.`quantity` ASC,
      WHEN `Delivery`.`type` = 1 THEN `Delivery`.`quantity` DESC
    END;
    

    【讨论】:

      【解决方案2】:

      使用以下链接作为参考,我已将其放在一起用于您的场景。

      MySQL conditional ORDER BY ASC/DESC for date column

      ORDER BY 
            CASE WHEN `Delivery`.`type` = 0 THEN `Delivery`.`quantity` END ASC,
            CASE WHEN `Delivery`.`type` = 1 THEN `Delivery`.`quantity` END DESC;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 2015-09-26
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多