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楼的回答解决了=用于单行子查询的问题。
但是加入我要更新多行,而且更新的只是表中的部分数据,有没有什么高效的解决办法呢?
展开
 我来答
shaoshuai_bd
2008-09-16 · TA获得超过669个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:464万
展开全部
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 临时表。
卡姆安的狗
推荐于2018-04-19 · TA获得超过337个赞
知道答主
回答量:118
采纳率:100%
帮助的人:0
展开全部
因为查出的值很多,不知道你要更新为哪个,要是值都一样的话,用最大值或最小值,这样出来的是一条记录
update table1 a set a.name = (select max(b.name) from table2 where a.id=b.id);
where ---你可以在后面再次限制更新的记录条件
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式