乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

      SQL Server如何通過創(chuàng)建臨時表遍歷更新數(shù)據(jù)詳解

       2020-10-15 16:09  來源: 腳本之家   我來投稿 撤稿糾錯

        阿里云優(yōu)惠券 先領券再下單

      這篇文章主要給大家介紹了關于SQL Server如何通過創(chuàng)建臨時表遍歷更新數(shù)據(jù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

      前言:

      前段時間新項目上線為了趕進度很多模塊的功能都沒有經過詳細的測試導致了生成環(huán)境中的數(shù)據(jù)和實際數(shù)據(jù)對不上,因此需要自己手寫一個數(shù)據(jù)庫腳本來更新下之前的數(shù)據(jù)。(線上數(shù)據(jù)庫用是SQL Server2012)關于數(shù)據(jù)統(tǒng)計匯總的問題肯定會用到遍歷統(tǒng)計匯總,那么問題來了數(shù)據(jù)庫中如何遍歷呢?好像并沒有for和foreach這種類型的功能呀,不過關于數(shù)據(jù)庫遍歷最常見的方法當然是大家經常會想到的游標啦,但是這次我并沒有使用游標,而是通過創(chuàng)建臨時表的方式來更新遍歷數(shù)據(jù)的。

      為什么不使用游標,而使用創(chuàng)建臨時表?

      首先使用游標的方式遍歷數(shù)據(jù)可能代碼上比較直觀,但是代碼比較繁瑣(聲明游標,打開游標,使用游標,關閉游標和釋放游標)并且不符合操作集合的原則,而且也非常的耗費性能,因此通常數(shù)據(jù)量比較大的情況下不推薦使用游標。通過臨時表while遍歷數(shù)據(jù),更符合我們日常的編程思想操作集合原則,性能上雖不敢保證表使用游標要好多少,但是在把臨時表使用恰當?shù)那疤崾悄軠p少大量的性能消耗,并且使用起來非常簡單易懂。

      通過創(chuàng)建臨時表遍歷更新數(shù)據(jù):

      注意: 這里只是一個簡單的臨時表更新實例。

      我的目的是把TalkingSkillType表中的Sort值更新成為與Id一樣的值!

      未更新前的數(shù)據(jù)如下圖所示:

      臨時表遍歷更新SQL語句:

      ----SQL SERVER通過臨時表遍歷數(shù)據(jù)

      -- 判斷是否存在(object(‘objectname',‘type'))

      IF OBJECT_ID('tempdb.dbo.#temp','U') IS NOT NULL DROP TABLE dbo.#temp;

      GO

      -- 聲明變量

      DECLARE

      @ID AS INT,

      @Name AS VARCHAR(50),

      @Num AS INT

      --數(shù)據(jù)插入臨時表(select * INTO #Temp from 來源表)

      SELECT ID,Name INTO #temp FROM TalkingSkillType

      --查詢臨時表中數(shù)據(jù)

      --SELECT * FROM #temp

      set @Num=0 --賦初始值

      --查詢是否存在記錄,只要存在會一直循環(huán)直到不存在(WHILE EXISTS)

      WHILE EXISTS(SELECT ID FROM #temp)

      BEGIN

      set @Num= @Num + 1

      -- 取值(把臨時表中的值賦值給定義的變量)

      SELECT top 1 @ID= ID,@Name=Name FROM #temp;

      -- 輸出操作(用于查看執(zhí)行效果)

      PRINT(@Num)

      --更新

      UPDATE TalkingSkillType SET Sort=@ID where id=@ID

      -- 刪除本次操臨時表中的數(shù)據(jù)(避免無限循環(huán))

      DELETE FROM #temp WHERE ID=@ID; END

      --刪除臨時表 #temp

      --drop table #temp

      總結

      到此這篇關于SQL Server如何通過創(chuàng)建臨時表遍歷更新數(shù)據(jù)的文章就介紹到這了,更多相關SQL Server創(chuàng)建臨時表遍歷更新數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

      來源:腳本之家

      鏈接:https://www.jb51.net/article/196436.htm

      申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

      相關文章

      熱門排行

      信息推薦