这就是我想要的:将行从 tableA 复制到 tableB,但不是 tableB 中已经存在的任何行。没有 PK 或身份,我只想检查每个字段,如果有所有相同字段的匹配行,请不要插入。我已经尝试过 INSERT 和 MERGE:
--try with INSERT
INSERT TableB(col1,col2,col3,col4,col5,col6, etc.)
SELECT (col1,col2,col3,col4,col5,col6, etc.)
FROM tableA as src
WHERE NOT EXISTS (SELECT 1 FROM TableB as T
WHERE
T.col1 = src.col1 AND
T.col2 = src.col2 AND
T.col3 = src.col3 AND
T.col4 = src.col4 AND
T.col5 = src.col5 AND
T.col6 = src.col6, etc.)
我也尝试过 MERGE:
MERGE INTO tableA src
USING tableB T
ON (
T.col1 = src.col1 AND
T.col2 = src.col2 AND
T.col3 = src.col3 AND
T.col4 = src.col4 AND
T.col5 = src.col5 AND
T.col6 = src.col6, etc.)
WHEN NOT MATCHED THEN
INSERT (col1,col2,col3,col4,col5,col6, etc.)
VALUES (col1,col2,col3,col4,col5,col6, etc.);
两者都做同样的事情:我将进行插入(或合并),最初所有行都被导入,这很好,但是在第二次尝试(应该插入/合并 0 行)时,它将插入/合并 60%的行。
我相信这个问题是因为我没有 PK,这是我在其他帖子上看到的。我只想匹配所有字段,这可能吗?我错过了什么吗?
感谢您的任何建议/指导!