SQL 服务器:连接 2 个表,其中每行都有唯一的 PKEY 值

SQL Server : joining 2 tables where each row has unique PKEY value

我正在尝试将 2 个 table 与等量的列连接起来,并且每列的名称都相同。 Tb1 是我导入到 SQL 服务器的 MS Access table。 Tb2 是一个 table,从 tb1 每季度更新一次,用于生成报告。

我已经进入设计视图并确保所有列的数据类型都相同并且具有相同的名称。同样,每个 table 中的每一行都在名为 PKEY 的列中分配了一个唯一的整数值。

我想做的是将 tb1(MS Access table)中存在的所有新条目添加到现有 tb2。我相信这可以通过编写一个查询来完成,该查询加载在 tb1 中找到的所有唯一 pkey(也就是加载在 table 中找到的所有 NOT 的键,仅加载属于访问 table 中的行的唯一键),然后将这些条目附加到 Tb2 中。

写这个查询时不太确定从哪里开始,我试过类似的东西:

SELECT * 
FROM tb1 
WHERE PKEY <> Tb2.PKEY

如有任何帮助,我们将不胜感激。谢谢!

我会推荐 not exists:

select tb1.*
from tb1
where not exists (select 1 from tb2 where tb2.pkey = tb1.pkey);

您可以在此之前放置一个 insert 以将行插入第二个 table。

Insert into tb2 Select * from tb1 Where tb1.id not in (select Id from tb2)

上面的脚本从第一个 select 查询的结果中将记录插入到 tb2。

select 仅查询 returns 具有未在 select 子查询中列出的 ID 的记录。