我想更新每个表上具有不同WHERE条件的两列。我看了一遍,似乎找不到与确切事物匹配的解决方案。我想要这样的事情:
UPDATE users
SET col1= 'name1' WHERE id=3
AND col2='name1' WHERE id=10
答案 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所说的有条件更新