当前位置: 代码网 > it编程>数据库>Oracle > ORACLE两表关联更新三种方式

ORACLE两表关联更新三种方式

2024年06月17日 Oracle 我要评论
准备工作创建如下表数据drop table demo_t1;drop table demo_t2;create table demo_t1 ( fname varchar2(20) , fmoney

准备工作

创建如下表数据

drop table demo_t1;
drop table demo_t2;
create table demo_t1 
(
  fname varchar2(20) 
, fmoney varchar2(20) 
);
alter table demo_t1 add primary key(fname);
insert into demo_t1 (fname,fmoney) values('a','20');
insert into demo_t1 (fname,fmoney) values('b','30');
create table demo_t2
(
  fname varchar2(20) 
, fmoney varchar2(20) 
);
alter table demo_t2 add primary key(fname);
insert into demo_t2 (fname,fmoney) values('c','10');
insert into demo_t2 (fname,fmoney) values('d','20');
insert into demo_t2 (fname,fmoney) values('a','100');

现需求:参照t2表,修改t1表,修改条件为两表的fname列内容一致。

方式1:update

update demo_t1 t1
set t1.fmoney = (select t2.fmoney from demo_t2 t2 where t2.fname = t1.fname)
where exists(select 1 from demo_t2 t2 where t2.fname = t1.fname);

如果同时更新多个字段可以参照以下语法:

update demo_t1 t1
set (字段一,字段二,...) = (select 字段一,字段二,... from demo_t2 t2 where t2.fname = t1.fname)
where exists(select 1 from demo_t2 t2 where t2.fname = t1.fname);

方式2:内联视图更新

注意:需要取数据的表,该字段必是主键或者有唯一约束

update (
select t1.fmoney  fmoney1,t2.fmoney  fmoney2 from demo_t1 t1,demo_t2 t2 where t1.fname = t2.fname
)t
set fmoney1 =fmoney2;

方式3:merge更新

merge into demo_t1 t1
using (select t2.fname,t2.fmoney from demo_t2 t2) t
on (t.fname = t1.fname)
when matched then 
  update  set t1.fmoney = t.fmoney;

到此这篇关于oracle两表关联更新三种方式的文章就介绍到这了,更多相关oracle两表关联更新内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com