如何将A表内“dh”这个字段内容更新到B表的“dh”字段内,A表和B表中“zj”这个字段相等,求update 语句
update B set dh=(select dh from A where A.zj=B.zj)
如果数据量很大,防止大事务影响,可以在SQL最后加 limit n,限制每次更新的行数n,如1000,不过需要多次执行,直到所有数据更新完。
定义变量@i循环i,@count表中数据总数,@ID每次循环的ID。然后从表中查询总数到@count中。查询到有101条数据*
declare @i int=1,@count int,@ID varchar(30)
select @count=count(1) from #tabl1
select @count
1、需要考虑当 B 表中的 zj 值不在 A 表的情况需要如何处理,是更新 dh 为null还是不更新?如果更新为null,则使用 创意程序员 的SQL即可,如果不更新则需要使用如下SQL(不知道你是什么数据库,不同数据库系统有不同的写法,下面的应该是比较通用的),当然,还需要考虑 A 表中的同一 zj 是否存在数据重复的问题,这里就只随机的取其中一条进行更新了……
UPDATE B SET dh = ( SELECT dh FROM A WHERE A.zj = B.zj LIMIT 1 )
WHERE EXISTS( SELECT 1 FROM A WHERE A.zj = B.zj );