查找 SQL 中两个 table 之间的差异并将结果追加到源 table 并仅更新新插入行的列值

Find difference between two table in SQL and append back result to source table & update column values only for newly inserted rows

我是 SQL 服务器的新手。我想创建一个程序来检查 master table 和 quarterly table 之间的差异并将不同的行插入到 master table 并更新相应的列值。

大师table是这样的:

|PID | Release_date | Retired_date

|loc12|202108 |
|loc34|202108 |

每季度 table 就像:

|PID |地址 | Post_code

|loc12|斯利那加 | 5678
|loc34|吉利那加 | 6789
|loc45|纳加尔 | 7890
|loc56|布拉格 | 9012

结果大师table应该是这样的:

|PID | Release_date | Retired_date

|loc12|202108 |
|loc34|202108 |
|loc45|202111 |
|loc56|202111 |

我试过,但我无法在插入差异后更新主 table。我的密码是

insert into master(select PID from Master
                   except
                   select PID from Quaterly)
update master
set Release_date = '202111'
where PID in (select PID from Master
              except
              select PID from Quaterly)

TIA

您可以在一个查询中完成所有操作,无需使用 UPDATE:

INSERT INTO Master(PID, Release_date)
SELECT q.PID, '202111'
FROM Quaterly q
WHERE q.PID NOT IN (SELECT PID FROM Master)

您可以通过利用 SQL JOIN 使用的其他方法:

INSERT INTO MASTER
SELECT q2.PID, '202111'
FROM Quaterly q1
LEFT JOIN Quaterly q2
ON q1.PID = q2.PID
WHERE q1.PID IS NULL