Mysql - 选择并按两个价格列排序

时间:2016-08-25 14:37:53

标签: php mysql sorting sql-order-by

我面临从mysql中选择数据的一个问题,我无法弄明白。尝试做研究,但没有运气。

我有4列的表格:

id | name | price | discount_price
1 | Test 1 | 150  | 50
4 | test 2 | 130  | 300
2 | test 3 | 200  | 0
3 | test 4 | 130  | 10
4 | test 5 | 80  | 0

我需要选择数据并按价格订购,如果discount_price不是" ZERO",则按price_discount订购。问题是,现在它没有像我预期的那样工作。它显示结果,因为第一列已排序,最后是第二列排序。取决于我选择ASC或DESC。

我需要实现像将这两列合并为一个而不是排序的东西。像这样:

id | name | price | discount_price
3 | test 4 | 130  | 10*
4 | test 5 | 80* | 0
1 | Test 1 | 150  | 50*
2 | test 3 | 200*  | 0
4 | test 2 | 130  | 300*

在mysql中可以吗?或者之后应该在PHP中对此进行排序?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个(表创建中的字段定义是伪代码):

CREATE TEMPORARY TABLE sort (id INT, name VARCHAR, INT price, INT discount_price, INT actual_price) ;
INSERT INTO sort (id, name, price, discount_price)
    SELECT id, name, price, discount_price
    FROM original_table ;
UPDATE sort SET actual_price = price WHERE discount_price = 0 ;
UPDATE sort SET actual_price = discount_price WHERE discount_price != 0 ;
SELECT id, name, price, discount_price FROM sort ORDER BY actual_price ;