oracle数据库表数据操作问题
SQL中,T1表包含a、b、c、d、e、f、g。T2表包含c、d、e。把T2表的数据更新到T1表中,并且T1中的a与T2中的c相同的更新到之前行,不同的单独一行。该怎么做...
SQL中,T1表包含a、b、c、d、e、f、g。T2表包含c、d、e。把T2表的数据更新到T1表中,并且T1中的a与T2中的c相同的更新到之前行,不同的单独一行。 该怎么做,可以提供我写思路. 谢谢啦
展开
2个回答
展开全部
用两句实现或用脚本块实现:
两句:
insert into t1(a,b,c,d,e,f,g)
select c,null,d,e,null,null from t2 where not exists(select 1 from t1 where a=t2.c);
update t1
set d =(select d from t2 where t2.c=t1.a) ,
e =(select e from t2 where t2.c=t1.a)
where exists(select 1 from t2 where t2.c = t1.a);
脚本块
declare
cursor c is select * from t2 ;
begin
for r in c loop
update t1 set d=r.d ,e=r.e where a=r.c;
if sql%rowcount =0 then
insert into t1 (a,b,c,d,e,f,g) values (r.c,null,r.d,r.e,null,null);
end if;
end loop;
commit;
end;
两句:
insert into t1(a,b,c,d,e,f,g)
select c,null,d,e,null,null from t2 where not exists(select 1 from t1 where a=t2.c);
update t1
set d =(select d from t2 where t2.c=t1.a) ,
e =(select e from t2 where t2.c=t1.a)
where exists(select 1 from t2 where t2.c = t1.a);
脚本块
declare
cursor c is select * from t2 ;
begin
for r in c loop
update t1 set d=r.d ,e=r.e where a=r.c;
if sql%rowcount =0 then
insert into t1 (a,b,c,d,e,f,g) values (r.c,null,r.d,r.e,null,null);
end if;
end loop;
commit;
end;
追问
谢谢你的提示,我想多问一句 要是不同的库的表的话,执行怎么报了这个错?
追答
图片看不清楚。可能性最大的就是权限问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询