Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何通过一个查询更新两个不同的行?_Mysql_Sql_Logical Operators - Fatal编程技术网

Mysql 如何通过一个查询更新两个不同的行?

Mysql 如何通过一个查询更新两个不同的行?,mysql,sql,logical-operators,Mysql,Sql,Logical Operators,这是我的桌子: // mytable +----+------+ | id | num | +----+------+ | 1 | 400 | | 2 | 200 | | 3 | 200 | | 4 | 250 | +----+------+ 以下是预期结果: +----+------+ | id | num | +----+------+ | 1 | 390 | | 2 | 200 | | 3 | 220 | | 4 | 250 | +----+----

这是我的桌子:

// mytable

+----+------+
| id | num  |
+----+------+
| 1  | 400  |
| 2  | 200  |
| 3  | 200  |
| 4  | 250  |
+----+------+
以下是预期结果:

+----+------+
| id | num  |
+----+------+
| 1  | 390  |
| 2  | 200  |
| 3  | 220  |
| 4  | 250  |
+----+------+
如你们所见,我减去了10,其中id=1,我加了20,其中id=3

我的问题是:

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

如何管理+或-?

在case语句中使用负数:

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

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

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