MySQL替代"CASE"语句的方法



我可以知道,有没有其他方法或简短的方法来编写下面所示的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的情况下的选择。

相关内容

最新更新