oracle中的update语句能用相关子查询么? 10
例如:table1(id,name),table2(id,name)id为primiarykeyupdatetable1aseta.name=(selectb.namef...
例如:table1(id,name),table2(id,name) id为primiary key
update table1 a set a.name = (select b.name from table2 where a.id=b.id);
这样子查询返回的是多行,而= 只能用于单行子查询
有没有好的解决办法....
1楼的回答解决了=用于单行子查询的问题。
但是加入我要更新多行,而且更新的只是表中的部分数据,有没有什么高效的解决办法呢? 展开
update table1 a set a.name = (select b.name from table2 where a.id=b.id);
这样子查询返回的是多行,而= 只能用于单行子查询
有没有好的解决办法....
1楼的回答解决了=用于单行子查询的问题。
但是加入我要更新多行,而且更新的只是表中的部分数据,有没有什么高效的解决办法呢? 展开
2个回答
展开全部
update table1 a set a.name = (select b.name from table2 where a.id=b.id and rownum=1 );
其实要按你的具体需求而定。
步骤多,但效率比较高:
1、create table 临时表 value (select a.id,a.name,b.name,... from table1 a,table2 b where a.id=b.id)
2、删除table1中的记录,不要drop
3、insert into table1 select 你需要的字段 from 临时表。
其实要按你的具体需求而定。
步骤多,但效率比较高:
1、create table 临时表 value (select a.id,a.name,b.name,... from table1 a,table2 b where a.id=b.id)
2、删除table1中的记录,不要drop
3、insert into table1 select 你需要的字段 from 临时表。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询