我正尝试使用表2中的“ ID”列中的值更新表1中的“ ID”列中的值-仅当它们不匹配时。我想我除了set语句外什么都有。
我想知道这是否是解决此问题的最佳方法,以及如何格式化此类问题的子查询
update table1 B
set B.id = (select A.id
from table2 A
where B.num = A.num
and B.name = A.name)
where B.num = A.num
and B.name = A.name
and B.id <> A.id
;
答案 0 :(得分:1)
也许是这样吗?
update B
set B.id=A.Id
from table1 B
join table2 A
on B.num=A.num
and B.name=A.name
and B.id<>A.id
答案 1 :(得分:0)
Oracle在更新中不支持join
。但是您可以使用两个子查询:
update table1 B
set id = (select A.id
from table2 A
where B.num = A.num and
B.name = A.name
)
where exists (select A.id
from table2 A
where B.num = A.num and
B.name = A.name and
B.id <> A.id
);
答案 2 :(得分:0)
使用MERGE命令。
这是一个基本示例:
MERGE INTO table1 a
USING (SELECT bb.asdf,cc.zxcv
from table2 bb,table3 cc
where bb.field1=cc.field1) b
ON (a.asdf=b.asdf)
WHEN MATCHED THEN
UPDATE SET a.zxcv=b.zxcv;