刚刚在我们的11g中进行了一些数据迁移并发现了一种情况,我通常会创建一些单独的UPDATE脚本并开始思考。有没有办法在同一个脚本中使用不同的WHERE子句进行多个更新?
我的意思是代替
UPDATE table1 SET value1=X WHERE value1=A;
UPDATE table1 SET value1=Y WHERE value1=B;
UPDATE table1 SET value1=Z WHERE value1=C;
你能做点什么吗
UPDATE table1 SET value1=X WHERE value1=A,SET value1=Y WHERE value1=B, SET value1=Z WHERE value1=Z;
显然上面的语法是错误的,但这是我的观点。可以这样做,或者你只需要做三个单独的脚本吗?
提前致谢
KS
答案 0 :(得分:3)
UPDATE table1 SET value1 = CASE
WHEN value1=A THEN X
WHEN value1=B THEN Y ELSE XYZ
END;
答案 1 :(得分:1)
使用CASE
表达式:
update table1
set value1 = case
when value1 = A then X
when value1 = B then Y
when value1 = C then Z
end
where
value1 in (A, B, C);
答案 2 :(得分:1)
OR DECODE()。
update table1 set
value1 = decode(value1, A, X
, B, Y
, C, Z
, value1
)
where value1 in (A, B, C);