首页 > 其他 > 详细

差异更新两个表

时间:2016-06-28 21:56:34      阅读:113      评论: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 版权所有
打开技术之扣,分享程序人生!