【问题标题】:How to update two different rows by one query?如何通过一个查询更新两个不同的行?
【发布时间】:2016-12-07 19:23:16
【问题描述】:

这是我的桌子:

// mytable

+----+------+
| id | num  |
+----+------+
| 1  | 400  |
| 2  | 200  |
| 3  | 200  |
| 4  | 250  |
+----+------+

这是预期的结果:

+----+------+
| id | num  |
+----+------+
| 1  | 390  |
| 2  | 200  |
| 3  | 220  |
| 4  | 250  |
+----+------+

如您所见,我在id = 1 处减去了10,并在id = 3 处添加了20

这是我的查询:

UPDATE mytable SET num = num +/- (CASE WHEN num = 1 THEN 10 WHEN num = 3 THEN 20 END)
WHERE id IN (1,3)

如何管理+ or -

【问题讨论】:

    标签: mysql sql logical-operators


    【解决方案1】:

    在case语句中使用负数即可:

    UPDATE mytable 
    SET num = num + CASE WHEN id = 1 THEN -10 ELSE 20 END
    WHERE id IN (1,3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多