【发布时间】:2017-04-14 23:03:59
【问题描述】:
我有一个自动化流程,每周都会将数据附加到Table1。它只有 4 列 [Reason, Number of Occurences, Sent Date, and Program]。 Table1 不断增长,不关心重复记录。 (每周只有 26 条记录,只有 4 列,因此性能/空间不是问题)
我有另一个表 Table2,我只想要来自 Table1 的不同记录。如果记录已经存在于Table 2 我不想插入记录。
我认为下面的语句会起作用,但它不起作用:
begin transaction
insert into [Database]..[Table2]
select Distinct * from [Database]..[Table1]
where not exists (select * from [Database]..[Table2])
(0 row(s) affected)
如果我注释掉 WHERE 子句,它会起作用,但它会插入 Table2 中已经存在的记录
begin transaction
insert into [Database]..[Table2]
select Distinct * from [Database]..[Table1]
--where not exists (select * from [Database]..[Table2])
(83 row(s) affected)
如何检查 Table1 中的不同记录,如果 Table2 中不存在该记录,请插入该记录?
我正在使用 MS SQL Server 版本 11.0.6020.0
【问题讨论】:
-
IMO 如果您使用 IF 语句,那么您所做的将更具可读性。
-
你真的需要有两个表——为什么不让 table2 成为 table1 的视图?
-
@Hogan,你知道吗...这实际上可能是一种选择。我会提出来的。
标签: sql sql-server insert-into