MS SQL - Insert Into Distinct Where NOT Exists 问题

MS SQL - Insert Into Distinct Where NOT Exists issue

我查看了 Stack overflow 上关于将数据从一个 table 复制到另一个的其他线程(但不要复制重复数据)。但我一直运行关注这个问题。

我有 table A 和 B。

Table A 有 7 列,第一列作为它的键索引。 Table B 有 7 列,第一列作为它的键索引。

以下代码对我不起作用:

INSERT INTO dbo.A SELECT DISTINCT * from dbo.B
WHERE NOT EXISTS (SELECT * from dbo.A
WHERE 'dbo.B.c1' = 'dbo.A.c1')

不幸的是,我得到:

Violation of PRIMARY KEY constraint 'PK_A'. Cannot insert duplicate key in object 'dbo.A'. The duplicate key value is (VALUE).

这是因为它是主键。

我的问题是:如何在不复制 A 中已有数据的情况下将数据从 B 复制到 A。

单引号表示 SQL 中的字符串文字。因此,您正在检查 string 'dbo.B.c1' 是否等于 string 'dbo.A.c1',当然,这永远不会真的。只需删除它们,您应该没问题:

INSERT INTO dbo.A 
SELECT DISTINCT * 
FROM   dbo.B
WHERE  NOT EXISTS (SELECT * 
                   FROM   dbo.A
                   WHERE  dbo.B.c1 = dbo.A.c1 -- No quotes!
                  )