合并具有不同列的表(SQL 服务器)

Merge tables having different columns (SQL Server)

我有2个table,详情如下

Table 1

Name | City | Employee_Id
-----------------
Raj  | CA   | A2345
Diya | IL   | A1234
Max  | PL   | A2321
Anna | TX   | A1222
Luke | DC   | A5643

Table 2

Name | City | Employee_Id | Phone | Age
---------------------------------------
Raj  | CA   | A2345       | 4094  | 25
Diya | IL   | A1234       | 4055  | 19
Max  | PL   | A2321       | 4076  | 23

如您所见,Employee_Id 是两列中的公共列。我想将 table 1 中存在的所有条目更新为 table 2。

Raj、Divya 和 Max 已经出现在 Table 2 中。因此它不应在 table 2 中创建重复条目并跳过这 3 个条目,而 Anna 和 Luke 不在 table 2. 所以这应该作为一个新行添加。

SQL 应该能够合并这两列并忽略已经存在的行。最后的table 2 肯定是类似这样的

Table 2

Name | City | Employee_Id | Phone | Age
---------------------------------------
Raj  | CA   | A2345       | 4094  | 25
Diya | IL   | A1234       | 4055  | 19
Max  | PL   | A2321       | 4076  | 23
Anna | TX   | A1222       |       |   
Luke | DC   | A5643       |       |   

有什么办法可以做到这一点吗?我是 SQL 的新手,所以任何输入都会有很大帮助。我阅读了合并和更新功能,但我猜合并是在 Transact-SQL 中。还阅读了有关连接的信息,但找不到破解此问题的方法。

演示设置

CREATE TABLE Table1
    ([Name] varchar(4), [City] varchar(2), [Employee_Id] varchar(5));

INSERT INTO Table1
    ([Name], [City], [Employee_Id])
VALUES
    ('Raj', 'FL', 'A2345'),
    ('Diya', 'IL', 'A1234'),
    ('Max', 'PL', 'A2321'),
    ('Anna', 'TX', 'A1222'),
    ('Luke', 'DC', 'A5643');

CREATE TABLE Table2
    ([Name] varchar(4), [City] varchar(2), [Employee_Id] varchar(5), [Phone] int, [Age] int);

INSERT INTO Table2
    ([Name], [City], [Employee_Id], [Phone], [Age])
VALUES
    ('Raj', 'CA', 'A2345', 4094, 25),
    ('Diya', 'IL', 'A1234', 4055, 19),
    ('Max', 'PL', 'A2321', 4076, 23);

合并查询

MERGE Table2 AS target
    USING Table1 AS source 
    ON (target.[Employee_Id] = source.[Employee_Id])
    WHEN MATCHED THEN 
        UPDATE SET [Name] = source.[Name],
                   [City] = source.[City]
WHEN NOT MATCHED THEN
    INSERT ([Name], [City], [Employee_Id], [Phone], [Age])
    VALUES (source.[Name], source.[City], source.[Employee_Id], NULL, NULL);

SELECT *
FROM Table2