一、数据准备:
--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的现象。(限定更新范围! 限定更新范围! 限定更新范围) 重要的事情说三遍