Oracle两张表关联更新的多种方式

本文介绍了Oracle数据库中,如何关联更新两张表的数据。分别展示了通过update单个字段、update多个字段、merge into语句以及使用ROWID游标进行更新的方法。在实际应用中,可以根据需求和性能考虑选择合适的方式,如简单更新推荐使用update,复杂场景可采用merge into或ROWID游标策略。
摘要由CSDN通过智能技术生成

模拟表AA(ID,NAME_A,DEPT_A)    模拟表BB(ID,NAME_B,DEPT_B)

1.update单个字段(注意Oracle与其他数据库不一致,需要多限制一个条件,否则将不匹配的都刷为null)

update AA a set a.NAME_A = (select b.NAME_B from BB b where a.ID=b.ID) where exists (select 1 from BB b where a.ID=b.ID)

2.update多个字段

update AA a set (a.NAME_A,a.DEPT_A) = (select b.NAME_B,b.DEPT_B from BB b where a.ID=b.ID) where exists (select 1 from BB b where a.ID=b.ID)

3.merge into

MERGE INTO AA a
USING (SELECT b.ID,b.NAME_B,b.DEPT_B from BB b) c
ON (a.ID=c.ID  )
WHEN MATCHED THEN
  UPDATE SET a.NAME_A=c.NAME_B,a.DEPT_A=c.DEPT_B

--第二个比第一个更好,特别是针对行级触发器
MERGE INTO AA a
USING (SELECT b.ID,b.NAME_B,b.DEPT_B from BB b group by b.ID,b.NAME_B,b.DEPT_B) c
ON (a.ID=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值