我正在尝试将这两个更新查询转换为一个个案查询:

update product_varities pv
set pv.quantity = pv.quantity + iquantity
where pv.article_id = iarticleid
AND pv.size_category_id = isize;

update product_varities pv
set pv.status = (case when pv.quantity > 0 then 1 else 0 end)
WHERE pv.article_id = iarticleid and pv.size_category_id = isize;


该查询工作正常。我试过的是:

update product_varities pv set pv.quantity =
(CASE WHEN pv.quantity >=0 THEN pv.quantity = pv.quantity + iquantity END),
pv.status =
(CASE WHEN pv.quantity > 0 THEN  1 else 0 END)
     where pv.article_id = iarticleid and pv.size_category_id = isize;


这返回

0 row(s) affected Rows Matched: 1 Changed 0


有人可以帮忙吗?谢谢

最佳答案

我认为这是您要寻找的:

update product_varities pv
set pv.quantity = pv.quantity + iquantity,
    pv.status = case when pv.quantity > 0 then 1 else 0 end
where pv.article_id = iarticleid
    and pv.size_category_id = isize;


显然,mysql允许您将字段的值更新为表达式的结果。那似乎是您在做什么。

相反,这种方式将字段的值更新为计算pv.quantity + iquantity

关于mysql - 将两个更新查询合并到单个案例MySQL中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27829637/

10-11 06:30