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字段不是唯一而造成的。希望大家能引以为戒哈! 展开
请哪位高手帮忙解决下,鄙人将十分感谢,很急很急哈
谢谢各位的解答!
问题我已经解决了哈,原来是因为A表的a字段不是唯一而造成的。希望大家能引以为戒哈! 展开
6个回答
展开全部
你写的语句没有错误,是其它别的地方出错了。
update A set b=(select c from B where a=A.a);
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),的确是“要报单行子查询返回多个行”的错误,我都试了千万遍了,能帮忙解决一下吗
追答
把两个表的结构贴上来,再说一下修改要求,或许能帮你解决问题。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有语法问题,如果这个语句报错,有可能是因为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)
你可以试试这样写:
update A set A.b=(select B.c from B where A.a=B.a and rownum = 1)
追问
嗯..的确是返回多行造成的,因为我要实现几千条数据的修改,所以我就只能想到这里了,加了rownum=1后,是可以实现修改,但是只能修改一部分,不知道为啥
还有其他办法解决吗
追答
你现在需要考虑的问题不是语句的写法,而是你想用什么值来更新,既然返回多行,就说明子查询查出的结果部位,用来更新的值都不唯一怎么能更新呢。你需要想法子找出条件来查出唯一的数据,因为这样的数据才是你想要更新的,否则的话就算所有数据全都更新了,也是错误的更新。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update A set A.b=(select B.c from B)因为AB表没有关系!所以用where会出错!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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''
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update A set A.b=(select top 1 B.c from B where A.a=B.a)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询