SQL批量插入,避免重复,无PK

本文关键字:PK 插入 SQL | 更新日期: 2023-09-27 18:08:39

我被分配了一个任务,插入超过1000行4列。所讨论的表没有PKFK。假设它包含ID CustomerNo Description列。需要插入的记录可以具有相同的CustomerNoDescription值。

我读了关于导入数据到临时表,将其与真实表进行比较,删除重复项以及将新记录移动到真实表的内容。

我也可以有1000个查询来检查这样的记录是否已经存在,如果不存在则插入数据。但出于显而易见的原因,我羞于尝试。

我不期待任何具体的代码,因为我没有给出任何具体的细节。我所希望的是一些伪代码或完成这些任务的一般建议。我等不及要给点赞了!

SQL批量插入,避免重复,无PK

所以这个想法是,如果已经有一个具有相同ID的条目,您不想插入一个条目吗?

如果是这样,在将数据导入临时表之后,您可以在select语句的where子句中完成您要查找的内容:

insert into table
    select ID, CustomerNo, Description from #data_source
    where (#data_source.ID not in (select table.ID from table))

我建议您将数据加载到临时表或变量表中。然后,你可以使用不同的关键字"选择进入",这将删除重复的记录。

您将始终需要读取目标表,除非您将目标表批量加载到临时表中(此时您将有两个临时表),比较两者,消除重复项,然后插入目标表,但即使这样也不准确,因为您可以在执行此操作时在目标表中进行新的插入。