gpt4 book ai didi

sql - 跳过/忽略/不插入重复行

转载 作者:行者123 更新时间:2023-12-01 23:04:25 27 4
gpt4 key购买 nike

这就是我想要的:将表 A 中的行复制到表 B,但不复制表 B 中已有的任何行。没有 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,这是我在其他帖子中看到的。我只想匹配所有字段,这可能吗?我错过了什么吗?

感谢您的任何建议/指导!

最佳答案

您可以使用 EXCEPT

INSERT INTO table1
SELECT * from table2
EXCEPT
SELECT * from table1;

看看 fiddle here

关于sql - 跳过/忽略/不插入重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com