两张表A、B,现在要把A表的a字段,全部更新到B表的b字段,两个表有共同字段C,请问这个update语句怎么写

我是这样写的,update B set b=(select a from A where A.c=B.c); 总是报单行子查询返回多行,请问这个怎么改??

楼主这语句有bug,这种修改如果在B表中的数据在A表中没有就会把B表的这些数据改为空,若原来是空的还好,若不是空的就相当于把数据删除了,这是其一。根据你说的报查询返回多行来看,是出现了在a表中的c字段的值有重复,该更新为一对一更新所以他不知道你要更新为a表中那多个值的那个值,于是就报了那么一个错误,举例说明就是 如a.c有同一个值有两条记录,比如:小二:77(a:c)和 小三:77(a:c)这样他就不知道你是要把b中的b改为小二还是小三就报了那么一个错。
数据少的话可以关联查询出来(要保证一对一)然后将a的a复制到b的b那列,
多的话写存储过程,或者
update B set b=(select a from A where A.c=B.c)
where b.c in (select a.c from a)
--这个语句先测试,再操作,避免出现问题
--语句保证是1对1,通常加条件,在记录相同的情况下可以选择第一条,这个对应数据库有对应函数与方法实现
;追问

还是报同样的错,B表里b字段没有值,我就是想通过两个表的共同的字段c,把A表的a字段全部更新到B表的b字段啊

追答

报这个错在oracle中,在多个关联值有多个且更新值也相同的情况下可以加个rownum =1就解决了,但考虑到可能关联的值有多个但更新的值确五花八门就要另寻条件了

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-02
update B set b=A.a from B inner join A on B.C=A.C
首先要保证A表的C字段是唯一的追问

命令未正确结束

追答

你是不是改过语句(在执行的时候),你最好把你执行的语句再贴出来

追问

在执行的时候怎么改语句额…

追答

你截图一下,我看一下具体错误和错误的语句

追问

追答

你语句写的有问题,update 后面可以用a,from 表名 a inner join

追问

那我应该改成什么样的?

追答

你把语句贴出来吧,截图看不清楚

本回答被提问者采纳
第2个回答  2016-06-02
这句话后面加where追问

再加where???条件是什么?

a表字段和b表所有字段相同,怎么把a表所有数据更新到b表
1、A表有数据更新的时候自动更新B表:create or replace trigger tg after update on A for each row begin update B set xx=xx where b.aid = a.id;end;\/ 2、A表插入数据时,B表更新数据:create or replace trigger tgg after insert on A for each row begin insert B values(xxxx);e...

匹配两个excel表格中相同的内容
举个例子来说明,假设表格A有两列数据,分别是产品编号和产品价格。表格B只有一列数据,即产品编号。我们想要将表格A中的产品价格添加到表格B中对应的产品编号旁边。这时,我们可以在表格B的一个空白列中,先使用MATCH函数找到每个产品编号在表格A中的位置,然后使用INDEX函数根据这个位置从表格A中获取对应...

把a表中字段a等于空的内容替换b表中b字段(两表中有相同内容的字段c)s...
select ISNULL(a.字段1,b.字段1),字段2 from a表 a left join b表 b on a.字段3=b.字段3试试

如果a表中的A字段和b表中得B字段同时在c表中存在,则显示A字段和B字段...
如果c表只有一个C字段的话 select a.A,b.B from a,b,c c1,c c2 where a.A=c1.A and b.B=c2.B 或者 select a.A,b.B from a,b where exists (select * from c where a.A=c.C) and exists (select * from c where b.B=c.C)或者 select * from (select a.A from a...

有两个表A,B,如何用SQL语句,更新A表中的一个记录的字段,并将更新后的...
update A set STATE=1 where ID=?insert into B (ID,LNAME,ROLE,GROUP_ID,STATE)select ID, NAME,ROLE,GROUP_ID,STATE from A 从你的语句来看,你更新的那个ID,是个变量 那后面的那个 select ID, NAME,ROLE,GROUP_ID,STATE from A where id =? 这里也应该是变量 这个才能一一对应上啊。...

有两个数据库表,两个表中的字段不同,怎么样把其中一个表中的所有记录...
sql server 和mysql可以这样:use 库1;go insert A表(要插入的字段列表)select 要插入的字段列表 from 库2.B表 ;--注意字段的对应...oracle 可以使用 exp导出 然后imp导入

现有两张表A表a字段、B表b字段、AB两表都有字段c,以c字段作为关联,怎么...
update a表 set a表.a=(select b1.b from b表 b1,a表 a1 where b1.c=a1.c and a1.c=a表.c)但要保证在B表中C字段是唯一的才行。也就是说子查询只能返回一行数据。

...表:A和B,两张表里的人名都是一样的。怎么把B表的年龄数据导入A表的...
用vlookup函数,在a表的姓名后面插入空列(例如c列)在c1上输入公式vlookup,公式有四个参数。第一个参数选择所在行的姓名的单元格(a表姓名为b列,则选择b1);第二个参数选择b表从姓名到年龄的列的范围(姓名一定在前面,例如姓名是a列,年龄在d列,则选择a到d列--a:d),第三个参数选择b表...

两个表,根据条件批量更新其中一个表的某一列数据。(高分求救,在线等待...
批量更新的语法是这样 update a表 set a.filed=(select field from b表 where b.关联字段=c.关联字段) from b表, c表 where b.关联字段=c.关联字段 and 其他条件 欢迎你加入.NET俱乐部QQ群:2613338

Excel表个如何将两个表中相同的部分匹配出来,该怎么做
具体使用方法如下:1、首先我们先随便准备两张不同的表,A表学生准考证表为全部信息表,B表为部分学生表,现在需要将A表中与B表姓名匹配的学生的准考证号取出来放到对应的列中。2、在目标列中,在英文输入法下,直接输入“=vlookup()”,在输入过程中,会自动提示VLOOKUP函数,可以直接双击蓝色区域选定...

相似回答