MYSQL ORDER BY 2列

时间:2012-04-05 10:22:57

标签: mysql sql-order-by

我在MySQL中有以下表格:

----------------------------
| id | price | price_promo |
----------------------------
|  1 |    10 |           0 |
|  2 |     8 |           0 |
|  3 |    10 |           9 |
----------------------------

我有以下查询:

$SQLquery = "SELECT * FROM table ORDER BY price ASC"

如果price_promo > 0按实际收购价格获得订单,我想要的是忽略价格列,并获得此结果:

----------------------------
| id | price | price_promo |
----------------------------
|  1 |    10 |           0 |
|  3 |    10 |           9 |
|  2 |     8 |           0 |
----------------------------

我需要做什么查询?

3 个答案:

答案 0 :(得分:6)

你可以尝试

SELECT * FROM your_table 
ORDER BY
    CASE 
       WHEN price_promo = 0 THEN price
       WHEN price_promo IS NULL then price
       ELSE price_primo
    END

用户评论后编辑:
如果你想降序使用这个

SELECT * FROM your_table 
ORDER BY
    CASE 
       WHEN price_promo = 0 THEN price
       WHEN price_promo IS NULL then price
       ELSE price_primo
    END DESC

答案 1 :(得分:0)

您可以按不同顺序对多列进行排序。

试试这个......

SELECT * 从表 ORDER BY价格DESC,price_promo ASC

答案 2 :(得分:-2)

请提供更多详情?要获得所需的结果(在您的示例中),您可以使用此查询:

SELECT * FROM table ORDER BY price DESC , price_promo ASC