我在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 |
----------------------------
我需要做什么查询?
答案 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