我面临从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中对此进行排序?谢谢你的帮助。
答案 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 ;