MYSQL ORDER BY 2列

CBu*_*atu 0 mysql sql-order-by

我在MySQL中有以下表格:

----------------------------
| id | price | price_promo |
----------------------------
|  1 |    10 |           0 |
|  2 |     8 |           0 |
|  3 |    10 |           9 |
----------------------------
Run Code Online (Sandbox Code Playgroud)

我有以下查询:

$SQLquery = "SELECT * FROM table ORDER BY price ASC"
Run Code Online (Sandbox Code Playgroud)

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

----------------------------
| id | price | price_promo |
----------------------------
|  1 |    10 |           0 |
|  3 |    10 |           9 |
|  2 |     8 |           0 |
----------------------------
Run Code Online (Sandbox Code Playgroud)

我需要做什么查询呢?

Mar*_*rco 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
Run Code Online (Sandbox Code Playgroud)

用户评论后编辑:
如果您想降序使用此功能

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
Run Code Online (Sandbox Code Playgroud)