0

我在 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 |
----------------------------

我需要做什么查询?

4

3 回答 3

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
于 2012-04-05T10:27:42.727 回答
0

您可以按不同顺序的多列排序。

尝试这个....

SELECT * FROM table ORDER BY price DESC , price_promo ASC

于 2012-04-05T10:34:14.733 回答
-2

请提供更多细节?要获得您想要的结果(在您的示例中),您可以使用以下查询:

SELECT * FROM table ORDER BY price DESC , price_promo ASC 
于 2012-04-05T10:33:18.650 回答