sql update實現一個表中的數據更新另一個表中的數據

由於之前使用過如下代碼塊這種方式,但是風險比較大。一下把一個表搞的數據亂了,只得恢復數據庫重新替換過來,可能是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

查詢到有101條數據

第三步:主要的內容是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

驗證更新語句有無問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章