• 差异更新两个表


    CREATE TABLE Temp_A
        (
          Emp_No VARCHAR(7) ,
          Emp_Name VARCHAR(20)
        )
    
    CREATE TABLE Temp_B
        (
          Emp_No VARCHAR(7) ,
          Emp_Name VARCHAR(20)
        )
    
    DELETE FROM Temp_a
    
    INSERT  INTO Temp_A
    VALUES  ( '0000001', '张飞' )
    INSERT  INTO Temp_A
    VALUES  ( '0000002', '吕布' )
    INSERT  INTO Temp_A
    VALUES  ( '0000003', '关羽' )
    INSERT  INTO Temp_A
    VALUES  ( '0000004', '貂蝉' )
    INSERT  INTO Temp_A
    VALUES  ( '0000005', '孙权' )
    
    INSERT  INTO Temp_B
            SELECT TOP 4
                    *
            FROM    Temp_A
    
    -- 使用Merge更新表
    MERGE INTO Temp_B b
    USING Temp_A a
    ON a.Emp_No = b.Emp_No
    --WHEN MATCHED 
    --THEN UPDATE SET b.Emp_Name=a.Emp_Name
    WHEN NOT MATCHED THEN
        INSERT
        VALUES ( a.Emp_No, a.Emp_Name );
    
    -- 使用EXISTS找出A表中存在, B表中不存在的
    INSERT  INTO Temp_B
            SELECT  *
            FROM    Temp_A a
            WHERE   NOT EXISTS ( SELECT *
                                 FROM   Temp_B b
                                 WHERE  a.Emp_No = b.Emp_No )
    
    -- 更新B表中和A表中工号一样的员工姓名 注意 更新的表需要用全名
    
    UPDATE  Temp_B
    SET     Temp_B.Emp_Name = a.Emp_Name
    FROM    Temp_A a
    WHERE   a.Emp_No = Temp_B.Emp_No
    
    -- 方法二 使用连接方式
    UPDATE  b
    SET     b.Emp_Name = a.Emp_Name
    FROM    dbo.Temp_B b
    LEFT JOIN dbo.Temp_A a ON a.Emp_No = b.Emp_No
    

      

  • 相关阅读:
    POJ 2411 Mondriaan's Dream -- 状压DP
    codeforces 792A-D
    codeforces 796A-D
    Acdream1201 SuSu's Power
    HDU 2818 Building Block
    C# NetStream
    基于Duff's Device的C简易无栈协程实现
    CentOS 多版本 GCC 共存
    2017杭电多校第一场
    2019杭电多校第十场
  • 原文地址:https://www.cnblogs.com/intheway/p/5625043.html
Copyright © 2020-2023  润新知