Oracle使用查询结果更新表的方法

2014-11-24 17:18:55 · 作者: · 浏览: 0

模拟实验如下,使用t2表的查询结果,更新t1表相同id的数据。

drop table t1;

drop table t2;


create table t1(id int primary key,nickname varchar(20),playNum varchar(20));


create table t2(id int primary key,nickname varchar(20),playNum varchar(20));


insert into t1 values(1,1,10);


insert into t1 values(2,2,20);


insert into t1 values(3,3,30);


insert into t2 values(1,11,100);


insert into t2 values(2,22,200);


insert into t2 values(3,33,300);


commit;



Oracle有两种方式:
内联视图更新

update (

select t1.id t1id ,t1.nickname t1nickname,t1.playNum t1playnum,t2.id t2id ,t2.nickname t2nickname,t2.playNum t2playnum


from t1 inner join t2 on (t1.id=t2.id)


)


set t1nickname=t2nickname,t1playnum=t2playnum;



相关子查询

update t1 set (nickname,playNum)=

(select nickname,playNum from t2 where t1.id=t2.id);



MySQL只有下面的这一种方式
不过可以同时修改两个表的数据.
用t2的playNum更新t1,用t1的nickname更新t2


update t1,t2

set t2.nickname=t1.nickname,t1.playNum=t2.playNum


where t1.id=t2.id;



MySQL和Oracle的方式互不通用。