SQL Server语言 - 添加新行时删除重复的行



我一直在研究重复行的问题,但没有看到任何符合我的情况。此外,我对SQL Server相当陌生,所以如果我没有多大意义,我深表歉意。

所以我有一个保存历史信息的现有表(假设 TableA)。我有一个每周日运行的查询,仅使用前一周(周六至周五)的输入创建一个表,并将其存储在另一个表 (TableB) 中。

我每周日都会使用表B中的数据更新表A,并且使用INSERT INTO,它有效。但是,有时我可能必须在周中手动运行查询,在这种情况下,我可能会在周日收到重复项。

我究竟如何编写 INSERT INTO 以便我不会获得重复的行并保留最新执行查询中的值?

您尚未提供架构的详细信息,但在插入之前检查重复的最简单方法是使用类似于以下示例查询的NOT EXISTS

INSERT INTO TARGET_TABLE (Col1, Col2 ...)
SELECT Col1, Col2 .. FROM [SOURCE] S
WHERE NOT EXISTS
(
  SELECT 1 FROM TARGET_TABLE T WHERE T.UniqueIdentifierColumn= S.UniqueIdentifierColumn
)

试试这个:

INSERT INTO TABLEA(Col1, Col2 ...)
SELECT Col1, Col2 ... FROM TABLEB
EXCEPT
SELECT Col1, Col2 ... FROM TABLEA

最新更新