婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

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

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

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

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

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

    前言:

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

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

    首先使用游標(biāo)的方式遍歷數(shù)據(jù)可能代碼上比較直觀,但是代碼比較繁瑣(聲明游標(biāo),打開游標(biāo),使用游標(biāo),關(guān)閉游標(biāo)和釋放游標(biāo))并且不符合操作集合的原則,而且也非常的耗費(fèi)性能,因此通常數(shù)據(jù)量比較大的情況下不推薦使用游標(biāo)。通過臨時(shí)表while遍歷數(shù)據(jù),更符合我們?nèi)粘5木幊趟枷氩僮骷显瓌t,性能上雖不敢保證表使用游標(biāo)要好多少,但是在把臨時(shí)表使用恰當(dāng)?shù)那疤崾悄軠p少大量的性能消耗,并且使用起來非常簡單易懂。

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

    注意: 這里只是一個(gè)簡單的臨時(shí)表更新實(shí)例。

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

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

    臨時(shí)表遍歷更新SQL語句:

    ----SQL SERVER通過臨時(shí)表遍歷數(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ù)插入臨時(shí)表(select * INTO #Temp from 來源表)

    SELECT ID,Name INTO #temp FROM TalkingSkillType

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

    --SELECT * FROM #temp

    set @Num=0 --賦初始值

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

    WHILE EXISTS(SELECT ID FROM #temp)

    BEGIN

    set @Num= @Num + 1

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

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

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

    PRINT(@Num)

    --更新

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

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

    DELETE FROM #temp WHERE ID=@ID; END

    --刪除臨時(shí)表 #temp

    --drop table #temp

    總結(jié)

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

    來源:腳本之家

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

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

    相關(guān)文章

    熱門排行

    信息推薦