oracle 条件更新
发布网友
发布时间:2022-03-22 18:15
我来回答
共3个回答
热心网友
时间:2022-03-22 19:44
oracle 条件更新
如果按这个思路进行更新,会报错
update T1 set num=(select num from t2) where id in(select id from T2);
ORA-01247:单行子查询返回多个行
热心网友
时间:2022-03-22 21:02
如果按这个思路进行更新,会报错
update T1 set num=(select num from t2) where id in(select id from T2);
ORA-01247:单行子查询返回多个行
不过可以采取迂回战术
1
create table t1_new
as
select t1.id,t2.num from t1,t2 where t1.id=t2.id
union
select * from t1 where id not in(select id from t2);
2
rename t1 to t1_old;
3
rename t1_new to t1;追问你的union
select * from t1 where id not in(select id from t2);这句有什么用?
追答如果t1表中的id号都包含在t2表中,那么union没用;
如果t1表中有部分id号,在t2表中没有,那么
create table t1_new
as
select t1.id,t2.num from t1,t2 where t1.id=t2.id
会丢失一部分数据,这部分数据就是存在于t1中的id,但是不存在t2中id对应的数据,加入union是为了t1数据的完整性
热心网友
时间:2022-03-22 22:37
insert into T1
select T2.id,T2.num from T1 ,T2
where T1.id=T2.id