具有“不同”数据的多行更新表

时间:2011-02-23 15:22:21

标签: sql oracle

我认为解释这个的最好方法就是告诉你我的所作所为。

我有两个表A和B都有列Field1和Field2。但是表B中没有填写字段2

我想用表A的字段2填充表B的字段2,其中表A的字段1与表B的字段1匹配。

像update tableB这样的东西设置Field2 = tableA.field2,其中tablea.field1 = tableb.field1。

这可能看起来如此奇怪和模糊的原因在于我正在将一个旧的数据库中的初始数据加载到新的数据库中。

如果您需要澄清,请告诉我

1 个答案:

答案 0 :(得分:2)

听起来你只需要一个相关的更新

UPDATE tableB b
   SET field2 = (SELECT a.field2
                   FROM tableA a
                  WHERE a.field1 = b.field1 )
 WHERE EXISTS( SELECT 1
                 FROM tableA a
                WHERE a.field1 = b.field1 );

由于B中的每个field2都是NULL,因此您可以跳过WHERE EXISTS(在这种情况下,B中没有A匹配的行将使用NULL生成更新)一点额外的重做)。但是您通常希望包含它,以便只更新匹配的行。