如果我有两列,价格(full_price,sales_price)和这些列中都有数字。我知道sql语句可以按顺序执行多个顺序,但是当这些列中包含值时它是如何工作的?
("SELECT * FROM table ORDER BY full_price,sales_price DESC")
我如何完成所以它将选择两列的最小值?它会根据full_price和sales_price之间选择的列来按顺序放置数据吗?
注意:有时sales_price没有价值。
由于
编辑:
实施例
id full_price sales_price
1 23 42
2 342 200
3 1
4 10 8
我要做的是使用这些数字,我可以输出与最低价格相关的数据。
订单应该是:
3,4,1,2
原因:
3: 1
4: 8
1: 23
2: 200
答案 0 :(得分:4)
假设您的空白sales_price
为NULL且full_price
不能为NULL:
select ...
from ...
where ...
order by case
when sales_price is null then full_price
else least(full_price, sales_price)
end
您可能希望添加辅助排序键,以便从关系中获得一致且明智的结果。
答案 1 :(得分:1)
SELECT * FROM table
ORDER BY case when sales_price is null or full_price is null
then 0
when full_price > sales_price
then sales_price ASC
else full_price ASC
end
答案 2 :(得分:0)
如果您想根据full_price和sales_price的差异获得结果,请尝试:
SELECT *
FROM table
ORDER BY ABS(full_price - IF(sales_price IS NULL, 0, sales_price)) ASC
或者如果你想根据full_price和sales_price的比较得到结果,那么试试:
SELECT *
FROM table
ORDER BY IF(full_price < IF(sales_price IS NULL, 0, sales_price),
full_price , sales_price ) ASC