使用不同的一组值更新多个(不是全部)行-MySQL

时间:2018-08-07 03:32:36

标签: mysql sql

我有下表-pms_samplebucket:

partid | qty | inqty
--------------------
 4     | 5   | 3
 5     | 10  | 5
 6     | 10  | 5
 7     | 10  | 5 ----- n rows

我想按以下方式更新此表:

  • 如果partid ='4',则inqty = inqty-2;
  • 如果partid ='5',则inqty = inqty-4;

是否可以在单个UPDATE或INSERT INTO .... ON DUPLICATE KEY UPDATE语句中执行此操作?

  1. 我不要多个查询。
  2. partid值和减值将作为输入提供。

谢谢。

1 个答案:

答案 0 :(得分:1)

是:

update t
    set inqty = (case when partid = 4 then inqty - 2
                      when partid = 5 then inqty - 4
                      else inqty
                 end)
    where partid in (4, 5);