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相同的更新到之前行,不同的单独一行。 该怎么做,可以提供我写思路. 谢谢啦 展开
 我来答
HXRJW
2012-02-28 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:79万
展开全部
用两句实现或用脚本块实现:
两句:
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;
追问
谢谢你的提示,我想多问一句  要是不同的库的表的话,执行怎么报了这个错?
追答
图片看不清楚。可能性最大的就是权限问题。
ftw317
2012-02-29 · TA获得超过886个赞
知道小有建树答主
回答量:215
采纳率:50%
帮助的人:190万
展开全部
ORACLE中的MEGRE可以同时更新和插入数功能
MERGE INTO T1
USING T2
ON (T1.A = T2.C)
WHEN MATCHED THEN
UPDATE SET T1.A = T2.C
WHEN NOT MATCHED THEN
INSERT INTO VALUES (NULL, NULL, NULL, C, D, E);
COMMIT;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式