【问题标题】:SQL Server - Removing duplicate rows when adding new rowsSQL Server - 添加新行时删除重复行
【发布时间】:2019-06-23 10:28:48
【问题描述】:

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

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

我每周日都用来自 TableB 的数据更新 TableA,并且我正在使用 INSERT INTO,它可以工作。但是有时我可能不得不在周中手动运行查询,在这种情况下我可能会在周日得到重复查询。

我该如何编写 INSERT INTO,这样我就不会得到重复的行并保留最新执行查询中的值?

【问题讨论】:

标签: sql sql-server insert duplicates rows


【解决方案1】:

您尚未提供架构的详细信息,但在插入之前检查重复项的最简单方法是使用 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
)

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 2019-12-04
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2012-06-23
      • 1970-01-01
      • 2013-08-25
      相关资源
      最近更新 更多