1

我有一个包含以下列的表格(我简化了一点):

  • 产品名称
  • 产品代码
  • PRODUCT_price
  • PRODUCT_discounted_price

现在,当我展示它们时,它们可以按价格订购。问题是:我怎样才能同时考虑 PRODUCT_price 和 PRODUCT_discounted_price 以便如果有 PRODUCT_discounted_price 它比较它,但如果它不存在它只是被忽略?

例如,如果我有以下产品:

  • 姓名, 1, 12, 10
  • 名称2、2、11、0
  • 名称3, 3, 6, 0
  • 名称 4, 4, 25, 9
  • 名称5, 5, 30, 13

他们应该像这样订购:

  • 名称3, 3, 6, 0
  • 名称 4, 4, 25, 9
  • 姓名, 1, 12, 10
  • 名称2、2、11、0
  • 名称5, 5, 30, 13

我怎样才能做到这一点?

4

3 回答 3

2
select name, code, if(discounted_price=0,price,discounted_price) as real_price 
from product
order by real_price
于 2012-06-30T11:17:44.800 回答
2
order by (case 
          when product_discounted_price = 0 then product_price 
          else product_discounted_price 
          end)
于 2012-06-30T11:18:52.400 回答
0

您可以在不使用时将 discounted_price 列值设为 NULL,然后使用 COALESCE 进行订购:

SELECT COALESCE(PRODUCT_discounted_price, PRODUCT_price) AS order_col FROM products ORDER BY order_col

如果您不希望使用 NULL,可以使用 IF 而不是 COALESCE 重写相同的查询,但那样会更复杂一些。

于 2012-06-30T11:22:37.067 回答