MYSQL ORDER BY 2列

标签 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 |
----------------------------

执行此操作需要什么查询?

最佳答案

你可以试试

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

关于MYSQL ORDER BY 2列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10026809/

相关文章:

javascript - 从数据库中随机调用图库图像,间隔重叠

php - 在 SQL Select 中正确排序小数数据

sql - Postgresql - ORDER BY random() 但也按 id 排序?

sql - mysql:连接结构中的顺序子句写在哪里?

sql - ORDER BY 输出列小写

mysql - 每列的 SQL 唯一值

mysql - 阻止对给定外键的查询,直到该外键的所有插入完成

MySQL 排序 : why is "5x" after "11x"?

mysql - MySQL中处理高负载表的常见做法

php - 从mysql上的两个表中选择