sql update语句

如何将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,不过需要多次执行,直到所有数据更新完。

  • 这篇博客: sql update实现一个表中的数据更新另一个表中的数据中的 第二步 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 定义变量@i循环i,@count表中数据总数,@ID每次循环的ID。然后从表中查询总数到@count中。查询到有101条数据*

    declare @i int=1,@count int,@ID varchar(30)
    select @count=count(1) from #tabl1
    select @count
    
    

    查询到有101条数据

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 );