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