我正在将一个表的内容复制到另一个相同的表中。但是目标表中已经有数据。
目标表中的某些数据与源表中的代码相同。
是否可以跳过重复项而不阻止其余数据的插入而不会失败?
insert into [DB2].[dbo].[MAN] values([MAN],[DES])
SELECT [MAN]
,[DES]
FROM [DB1].[dbo].[MAN]
您可以使用
NOT EXISTS
:
INSERT INTO [DB2].[dbo].[MAN] ([MAN], [DES])
SELECT M.[MAN], M.[DES]
FROM [DB1].[dbo].[MAN] AS M
WHERE NOT EXISTS (SELECT 1 FROM [DB2].[dbo].[MAN] M1 WHERE M1.COL = M.COL);
您需要使用实际列名称更改M1.COL = M.COL
,从中可以识别重复值。
如果你有你独特的col,那么你可以这样去。
insert into [DB2].[dbo].[MAN] values([MAN],[DES])
SELECT [MAN]
,[DES]
FROM [DB1].[dbo].[MAN] WHERE uniqueCol NOT IN (SELECT uniqueCol FROM [DB2].[dbo].[MAN])
否则,附加几列以获得唯一的列并像这样进行比较。