【发布时间】:2021-07-17 00:43:23
【问题描述】:
关于这种防止重复插入的方法:
INSERT INTO table1
SELECT t2.col1,
t2.col2
FROM table2 t2
LEFT JOIN table1 t1
ON t2.col1 = t1.col1
AND t2.col2 = t1.col2
WHERE t1.col1 IS NULL
从我的测试中我可以看出,这将防止来自 Table_2 的任何重复 col1/col2 组合已经在 Table_1 中,但它不会阻止相同的 col1/col2 组合从 Table_2 中多次传入。我是否认为在 LEFT JOIN 中对 Table_1 的引用可以被认为是查询开始前 Table_1 的“快照”,因此它没有任何新的 col1/col2 组合的可见性作为查询本身的一部分从 Table_2 添加?
如果这是正确的,并且有没有办法检查传入源表中的重复数据,而无需采取额外的源重复数据删除步骤(在我的实际情况下,源将是两个表 INNER JOINed)?
谢谢
【问题讨论】:
标签: sql-server duplicates left-join