假设我们有下表:
id | col_a | col_b | col_c
1 | abc | null | qwqw
2 | null | null | null
3 | null | ijij | cba
我们想要进行以下更新:
首先,是否可以在一个查询中执行此操作?
如果没有,最好的选择是什么?
答案 0 :(得分:1)
最简单的方法是三个updates
:
update t
set col_a = cba
where id = 1;
update t
set col_b = uiui, col_c = zxzx
where id = 2;
update t
set col_b = null
where id = 3;
您可以将它们包装在一个事务中,以便它们同时生效。假设你有id
的索引,这应该有很好的表现。
您可以使用条件逻辑将它们放入单个语句中:
update t
set col_a = (case when id = 1 then cba else col_a end),
col_b = (case when id = 2 then uiui
when id = 3 then null
else col_b
end),
col_c = (case when id = 2 then zxzx else col_c end)
where id in (1, 2, 3);
我认为三个单独的陈述更清晰,更不容易出错。