我可以知道,有没有其他方法或简短的方法来编写下面所示的case
语句:
case
when p.our_price IS NULL OR p.our_price = 0
then p.sales_price
else p.our_price
end as sales_price
我尝试使用ifnull
函数中内置的mysql,如下所示:
ifnull(p.our_price,p.sales_price)
但这对我不起作用。
您可以使用CASE
表达式,但使用COALESCE
使其更简洁:
CASE COALESCE(p.our_price, 0)
WHEN 0 THEN p.sales_price ELSE p.our_price END AS sales_price
或者,使用IF()
功能:
IF(COALESCE(p.our_price, 0) = 0, p.sales_price, p.our_price)
作为一个长期使用MySQL的用户,我经常发现自己使用CASE
而不是IF()
,因为前者允许完全省略ELSE
条件。CCD_ 10总是需要一个显式的else值。
IF(p.our_price IS NULL OR p.our_price = 0, p.sales_price, p.our_price)
第一个参数是条件,第二个和第三个参数是在条件为true或false的情况下的选择。