版權聲明:本文為博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/hello_mr_anan/article/details/90228956
之前使用過如下代碼塊這種方式,但是風險比較大。一下把一個表搞的數據亂了,只得恢復數據庫重新替換過來,可能是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