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!
)
我查看了 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!
)