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
你把流程控制去掉了当然结果不一样了
表示:
若 s.status 则取 s.specials_new_products_price
否则取 p.products_price
你把流程控制去掉了当然结果不一样了
#2
就像是一个三元运算呀:
if(condition,True_exp,False_exp);
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
你把流程控制去掉了当然结果不一样了
表示:
若 s.status 则取 s.specials_new_products_price
否则取 p.products_price
你把流程控制去掉了当然结果不一样了
#2
就像是一个三元运算呀:
if(condition,True_exp,False_exp);
if(condition,True_exp,False_exp);
#3
原来是这种作用,多谢了。