由於之前使用過如下代碼塊這種方式,但是風險比較大。一下把一個表搞的數據亂了,只得恢復數據庫重新替換過來,可能是where條件沒有寫好。
update A SET A.cj = b.cj FROM A ,B WHERE A.Name = B.Name
然後根據自己平時積累寫下了如下代碼,自己可以驗證,風險比較小。
第一步:首先查詢你想要的語句到一個臨時表中。可以查看一下是否插入成功
select ROW_NUMBER() OVER(ORDER BY ID)as RowID,* into #tabl1 from V_QM_335 where id>=276 --獲取你要的數據插入到一個臨時表中
select * from #tabl1
第二步:定義變量@i循環i,@count表中數據總數,@ID每次循環的ID。然後從表中查詢總數到@count中。查詢到有101條數據
declare @i int=0,@count int,@ID varchar(30)
select @count=count(1) from #tabl1
select @count
第三步:主要的內容是while塊的內容。裏邊先查詢了一下看了看語句是否正確。如下圖。驗證沒毛病後,把select語句註釋掉,然後啓用exec語句塊循環執行語句。OK!!!
select ROW_NUMBER() OVER(ORDER BY ID)as RowID,* into #tabl1 from V_QM_335 where id>=276 --獲取你要的數據插入到一個臨時表中
select * from #tabl1
declare @i int=0,@count int,@ID varchar(30)
select @count=count(1) from #tabl1
select @count
while(@i<=@count)
begin
select @ID=V_335_1_10000005 from #tabl1 where RowID=@i
declare @strSql varchar(max)='update V_QM_340 set pid='+(select convert(varchar(10),max(ID)) from #tabl1 where V_335_1_10000005=@ID)+' where
V_340_1_10000005='''+@ID+''''
select(@strSql)
--exec(@strSql)
set @i+=1
end