Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 使用单独的WHERE条件更新两个不同的列_Mysql - Fatal编程技术网

Mysql 使用单独的WHERE条件更新两个不同的列

Mysql 使用单独的WHERE条件更新两个不同的列,mysql,Mysql,我想用不同的WHERE条件更新表中的两列。我找遍了所有地方,似乎都找不到与实际情况相符的解决方案。我想要这样的东西: UPDATE users SET col1= 'name1' WHERE id=3 AND col2='name1' WHERE id=10 可以使用大小写表达式执行此操作: UPADATE users SET col1 = CASE WHEN id=3 THEN 'name1' ELSE col1 END, col2 = CASE WHEN id=10

我想用不同的WHERE条件更新表中的两列。我找遍了所有地方,似乎都找不到与实际情况相符的解决方案。我想要这样的东西:

UPDATE users 
SET col1= 'name1' WHERE id=3

AND col2='name1' WHERE id=10
可以使用大小写表达式执行此操作:

UPADATE users
SET
    col1 = CASE WHEN id=3  THEN 'name1' ELSE col1 END,
    col2 = CASE WHEN id=10 THEN 'name1' ELSE col2 END
WHERE id IN (3, 10)

但我发现这种语法很笨拙,我可能宁愿在逻辑上进行单独的更新,而不是在单个事务中的单独命令中使用CASE。

尝试多表更新语法

UPDATE user t1 JOIN user t2
    ON t1.id = 3 AND t2.id = 10
    SET t1.col1 = 'name1',
        t2.col2 = 'name1';

或者Tim Biegeleisen所说的条件更新

Upadate不是一个词。除此之外,我不会回答带有“想要”的问题;这只是一件事。@草莓有一刻我以为有一个隐藏的MySQL命令我不知道:-