更新两个不同的列,每个列都有一个单独的WHERE条件

时间:2017-08-20 07:50:30

标签: mysql

我想更新每个表上具有不同WHERE条件的两列。我看了一遍,似乎找不到与确切事物匹配的解决方案。我想要这样的事情:

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

AND col2='name1' WHERE id=10

2 个答案:

答案 0 :(得分:0)

您可以使用CASE表达式执行此操作:

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的更新分开。

答案 1 :(得分:0)

尝试多表更新语法

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

或Tim Biegeleisen所说的有条件更新