oracle数据库update语句的疑问

我在表A中的数据如下namecou1cou2cou3cou4na11nullnullnullna22nullnullnull现在我需要从表B中想表A中更新数据,使用sel... 我在表A中的数据如下
name cou1 cou2 cou3 cou4
na1 1 null null null
na2 2 null null null
现在我需要从表B中想表A中更新数据,使用select语句从B中返回的结果集为
B_name B_cou1
na1 2
na2 3
我怎么才能使这个能够得到正确的添加
我原来的语句是
update A set cou2=(select B_cou1 from B where(条件1)) where name=(select B_name from B where(条件1))
报错 返回值不止一行。。求解~ 应该怎么写SQL 才能使得B中数据和正确更新到B中数据
展开
 我来答
流浪云风
推荐于2017-09-13 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:932万
展开全部
你的语句太混乱了,按照你的意思你需要明确几点。
1.使用b表数据更新a表,那么where条件是什么,也就是说,更新a表中哪些数据,用b表中的哪些数据更新,二者的关系是什么。从你的语句中我看不出b表和a表的关联。
2.找到关联条件后,通过关联条件查出的b表数据是否唯一,如果不唯一,还是会出现“返回值多于一行”的错误。

按照你的表结构和数据,假设A表和B表中的name列唯一,以name作为关联,可以这样写来实现你的更新目的:
update A set cou2 = (select B_cou1 from B where B.B_name = A.name) where name in (select B_name from B where B.B_name = A.name)
这条语句必须满足name在a、b表中唯一的条件,才能使用。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanliwoyaoai
2012-07-11 · TA获得超过416个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:463万
展开全部
cou2=(select B_cou1 from B where(条件1)) where name=(select B_name from B where(条件1))
= select B_cou1 from B where(条件1) 这个子查询只能有一条记录

可以改成
update A a set cou2= b.b_cou1
where exists
(select * from B b where b_name = a.name and (条件1) )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x403879785
2012-07-11 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1169万
展开全部
update A set cou2=(select b_cou1 from B where (条件1) and A.name=B.B_NAME)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
纲智邦2
2012-07-11
知道答主
回答量:8
采纳率:0%
帮助的人:3.8万
展开全部
update A set cou2=(select b_cou1 from B where A.name=B.B_NAME)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式