首页 > 其他 > 详细

差异更新两个表

时间:2016-06-28 21:56:34      阅读:109      评论:0      收藏:0      [点我收藏+]
CREATE TABLE Temp_A
    (
      Emp_No VARCHAR(7) ,
      Emp_Name VARCHAR(20)
    )

CREATE TABLE Temp_B
    (
      Emp_No VARCHAR(7) ,
      Emp_Name VARCHAR(20)
    )

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

 

差异更新两个表

原文:http://www.cnblogs.com/intheway/p/5625043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!