我有Mysql查询问题。我的问题是
UPDATE oc_product p
INNER JOIN oc_currency as c
ON p.price2_currency_code=c.`code`
SET p.price=CASE WHEN p.price2_currency_code='EUR' THEN p.price2*c.`value`
WHEN p.price2_currency_code='USD' THEN p.price2*c.`value`
ELSE p.price;
我总是
[Err] 1064 - 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 使用附近''在第4行
答案 0 :(得分:3)
可能你错过了END
UPDATE oc_product p
INNER JOIN oc_currency as c
ON p.price2_currency_code=c.`code`
SET p.price=CASE WHEN p.price2_currency_code='EUR' THEN p.price2*c.`value`
WHEN p.price2_currency_code='USD' THEN p.price2*c.`value`
ELSE p.price
END
答案 1 :(得分:0)
尝试使用以下查询:
update p
set p.price = (case when p.price2_currency_code='EUR'
then p.price2*c.`value`
when p.price2_currency_code='USD' then p.price2*c.`value`
else p.price end)
from oc_product p
join oc_currency c
on p.price2_currency_code=c.`code`;
答案 2 :(得分:0)
/D:
答案 3 :(得分:0)
您只有两个条件,因此您还可以使用比IF
CASE
UPDATE oc_product p
INNER JOIN oc_currency as c
ON p.price2_currency_code=c.`code`
SET p.price=
IF(p.price2_currency_code='EUR' OR p.price2_currency_code='USD', p.price2*c.`value`, p.price);
答案 4 :(得分:0)
在查询结束时添加一个END CASE,你就已经完成了设置。
UPDATE oc_product p
INNER JOIN oc_currency as c
ON p.price2_currency_code=c.`code`
SET p.price=CASE WHEN p.price2_currency_code='EUR' THEN p.price2*c.`value`
WHEN p.price2_currency_code='USD' THEN p.price2*c.`value`
ELSE p.price
END CASE;