SQL 循环更新

       今天在处理历史数据的更新,需要更新100W以上的数据,开始的时候,尝试直接写SQL 语句更新,后来发现这种更新会导致死锁,最终导致更新失败。于是自己采用SQL 循环更新的方式对数据进行更新,避免了数据死锁的问题。脚本如下:

DECLARE @n AS INT       --数据的循环次数
DECLARE @rows AS INT    --次更新的行数
SET @rows=5000
SET @n=(SELECT  COUNT(*) FROM dbo.EmployeeCompany WHERE ISNULL(InitialWpctgy,'')='')/@rows+1
WHILE @n>0
BEGIN 
UPDATE t SET InitialWpctgy=ISNULL(wpctgy,''),InitialTrydat=ISNULL(trydat,'')
 FROM  dbo.EmployeeCompany t WHERE ISNULL(InitialWpctgy,'')=''
 AND emplid IN  (SELECT TOP (@rows) emplid  from EmployeeCompany e WHERE ISNULL(InitialWpctgy,'')='')
SET @n=@n-1
PRINT @n
END


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值