楼主这语句有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,通常加条件,在记录相同的情况下可以选择第一条,这个对应数据库有对应函数与方法实现
;
update B set b=A.a from B inner join A on B.C=A.C
首先要保证A表的C字段是唯一的
这句话后面加where