0

如果我有两列,价格(full_price,sales_price),并且这些列中有数字。我知道 sql 语句可以执行多个 order by,但是当这些列中有值时它是如何工作的?

("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
4

3 回答 3

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

您可能希望添加辅助排序键以从关系中获得一致且合理的结果。

于 2012-07-25T05:15:06.393 回答
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
于 2012-07-25T05:12:35.710 回答
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
于 2012-07-25T05:12:36.120 回答