Oracle 关联更新

一、数据准备:

--1)创建待更新的主表学生表
create table stu
(
 sno varchar(20),
 sname varchar(40),
 sex varchar(20)
);
insert into stu values('s001','张磊','男');
insert into stu values('s002','宋飞','男');
insert into stu values('s003','王丽','女');
insert into stu values('s004','李娟','女');
commit;
--2)创建关联更新表新学生表
create table stu_new
(
 sno varchar(20),
 sname varchar(40),
 sex varchar(20)
);
insert into stu_new values('s001','张雷','男');
insert into stu_new values('s002','宋非','男');
commit;

二、实现需求:

三、实现代码:

update stu t 
set t.sname = (
    select t1.sname from stu_new t1 where t.sno = t1.sno --再把数据更新进去
)
where exists(
    select * from stu_new t2 where t.sno = t2.sno --先找到需要更新的数据
);
commit;

注意: 关联更新需要使用关联表通过关联子查询的方式更新主表字段值,需要注意的是一定要使用where条件限定更新范围,否则会因为找不到更新结果, 而导致原字段的值大量出现null的现象。(限定更新范围! 限定更新范围! 限定更新范围) 重要的事情说三遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值