• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    sql 聯合更新、關聯更新

    sql 要將兩個或者多個表的數據聯系關系,然后,點竄別的一個表數據時,需要用到如下布局:

    UPDATE ...

    SET ...

    FROM xxx, xxxx

    WHERE  ...

    方式/步調

    1. 1

      【若是存在測試姑且表,則先刪除,便于反復執行SQL】:

      IF OBJECT_ID('tempdb..#SourceTable1') IS NOT NULL DROP TABLE #SourceTable1;

      IF OBJECT_ID('tempdb..#SourceTable2') IS NOT NULL DROP TABLE #SourceTable2;

      IF OBJECT_ID('tempdb..#UpdateTable') IS NOT NULL DROP TABLE #UpdateTable;

    2. 2

      【建立源表1】:

      CREATE TABLE #SourceTable1(

      Id UNIQUEIDENTIFIER,

      SCode VARCHAR(50),

      SName NVARCHAR(100),

      Remark NVARCHAR(500)

      )

    3. 3

      【建立源表2】:

      CREATE TABLE #SourceTable2(

      Id UNIQUEIDENTIFIER,

      SCode VARCHAR(50),

      SAttr1 VARCHAR(100),

      SAttr2 VARCHAR(100)

      )

    4. 4

      【建立需要更新數據的表】:

      CREATE TABLE #UpdateTable(

      Id UNIQUEIDENTIFIER,

      SCode VARCHAR(50),

      SName NVARCHAR(100),

      SAttr1 VARCHAR(100),

      SAttr2 VARCHAR(100)

      )

    5. 5

      【插入源表1測試數據】:

      INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode1', '更新名字1', '更新測試備注1');

      INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode2', '更新名字2', '更新測試備注2');

      INSERT INTO #SourceTable1(Id, SCode, SName, Remark) VALUES(NEWID(), 'SCode3', '更新名字3', '更新測試備注3');

         -- 查詢插入的成果

         SELECT * FROM #SourceTable1

    6. 6

      【插入源表2測試數據】:

      INSERT INTO #SourceTable2(Id, SCode, SAttr1, SAttr2) VALUES(NEWID(), 'SCode1', 'SCode1-更新屬性1', 'SCode1-更新屬性2');

      INSERT INTO #SourceTable2(Id, SCode, SAttr1, SAttr2) VALUES(NEWID(), 'SCode2', 'SCode2-更新屬性1', 'SCode2-更新屬性2');

         -- 查詢插入的成果

         SELECT * FROM #SourceTable2

    7. 7

      【插入#UpdateTable的原始記實】:

      INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode1', '名字1', 'SCode1-屬性1', 'SCode1-屬性1');

      INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode2', '名字2', 'SCode2-屬性2', 'SCode2-屬性2');

      INSERT INTO #UpdateTable(Id, SCode, SName, SAttr1, SAttr2) VALUES(NEWID(), 'SCode3', '名字3', 'SCode3-屬性3', 'SCode3-屬性3');

         -- 查詢插入的成果

         SELECT * FROM #UpdateTable

    8. 8

      【利用結合查詢,將#UpdateTable、源表1、2中不異SCode的行字段更新到表#UpdateTable】:

      UPDATE ut

      SET ut.SName = sc1.SName,

          ut.SAttr1 = sc2.SAttr1,

      ut.SAttr2 = sc2.SAttr2

      FROM #UpdateTable ut, #SourceTable1 sc1, #SourceTable2 sc2

      WHERE ut.SCode = sc1.SCode

      AND ut.SCode = sc2.SCode

         -- 查詢插入的成果

         SELECT * FROM #UpdateTable

    • 發表于 2018-10-20 00:00
    • 閱讀 ( 730 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆