请问这条SQL语句的功能是什么?

时间:2022-09-11 13:53:53
它是在osCommerence中的一条语句,数据库为mysql:

select p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from products p left join specials s on p.products_id = s.products_id where products_status = '1' order by p.products_date_added desc 
当中的
 if(s.status, s.specials_new_products_price, p.products_price) as products_price
我不知道是有什么特别的作用,当我去掉if语句,将它改成:
select p.products_id, p.products_image, p.products_tax_class_id,  products_price from products p left join specials s on p.products_id = s.products_id where products_status = '1' order by p.products_date_added desc 
时,两个结果集却不相同,
有谁知道吗?请帮忙!

3 个解决方案

#1


if(s.status, s.specials_new_products_price, p.products_price) as products_price
表示:
若 s.status 则取 s.specials_new_products_price
否则取 p.products_price

你把流程控制去掉了当然结果不一样了

#2


就像是一个三元运算呀:


if(condition,True_exp,False_exp);

#3


原来是这种作用,多谢了。

#1


if(s.status, s.specials_new_products_price, p.products_price) as products_price
表示:
若 s.status 则取 s.specials_new_products_price
否则取 p.products_price

你把流程控制去掉了当然结果不一样了

#2


就像是一个三元运算呀:


if(condition,True_exp,False_exp);

#3


原来是这种作用,多谢了。