A、B两个表,表A字段a、b,表b字段a、c,请问如何将A表b字段替换为B表c字段

请不要使用这个:updateAsetA.b=(selectB.cfromBwhereA.a=B.a),因为这个是有语法错误的哈请哪位高手帮忙解决下,鄙人将十分感谢,很急很... 请不要使用这个:update A set A.b=(select B.c from B where A.a=B.a),因为这个是有语法错误的哈

请哪位高手帮忙解决下,鄙人将十分感谢,很急很急哈
谢谢各位的解答!
问题我已经解决了哈,原来是因为A表的a字段不是唯一而造成的。希望大家能引以为戒哈!
展开
 我来答
随o天
2012-09-17 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2032万
展开全部
你写的语句没有错误,是其它别的地方出错了。
update A set b=(select c from B where a=A.a);
追问
这个update A set A.b=(select B.c from B where A.a=B.a),的确是“要报单行子查询返回多个行”的错误,我都试了千万遍了,能帮忙解决一下吗
追答
把两个表的结构贴上来,再说一下修改要求,或许能帮你解决问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流浪云风
2012-09-17 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:937万
展开全部
没有语法问题,如果这个语句报错,有可能是因为select B.c from B where A.a=B.a子句的查询结果返回多行造成的。
你可以试试这样写:
update A set A.b=(select B.c from B where A.a=B.a and rownum = 1)
追问
嗯..的确是返回多行造成的,因为我要实现几千条数据的修改,所以我就只能想到这里了,加了rownum=1后,是可以实现修改,但是只能修改一部分,不知道为啥
还有其他办法解决吗
追答
你现在需要考虑的问题不是语句的写法,而是你想用什么值来更新,既然返回多行,就说明子查询查出的结果部位,用来更新的值都不唯一怎么能更新呢。你需要想法子找出条件来查出唯一的数据,因为这样的数据才是你想要更新的,否则的话就算所有数据全都更新了,也是错误的更新。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永tz
2012-09-25 · 超过13用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:38.9万
展开全部
update A set A.b=(select B.c from B)因为AB表没有关系!所以用where会出错!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fupx2008
2012-09-17 · TA获得超过687个赞
知道小有建树答主
回答量:1203
采纳率:0%
帮助的人:779万
展开全部
Update A Set A.b=B.c From A,B Where A.a=B.a
追问
嗯..但是会把A表的其他值清空....这不是我希望的事,有啥好办法没?
追答
其它值?是指A表的b列的其它值吗?如果是,那加上条件: And B.c''
Update A Set A.b=B.c From A,B Where A.a=B.a And B.c''
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenyuhuaand
2012-09-24
知道答主
回答量:6
采纳率:0%
帮助的人:8815
展开全部
update A set A.b=(select top 1 B.c from B where A.a=B.a)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式