2

刚刚在我们的 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

4

3 回答 3

4
UPDATE table1 SET value1 = CASE
           WHEN value1=A THEN X
           WHEN value1=B THEN Y ELSE XYZ
        END;
于 2013-10-17T09:32:45.327 回答
2

使用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);
于 2013-10-17T09:41:59.770 回答
2

或解码()。

update table1 set
value1 = decode(value1, A, X
                      , B, Y
                      , C, Z
                         , value1
               )
where value1 in (A, B, C);
于 2013-10-17T10:00:58.210 回答