【问题标题】:Compare between 2 tables and insert missing records pl sql在 2 个表之间进行比较并插入缺失的记录 pl sql
【发布时间】:2026-02-06 01:30:02
【问题描述】:

我们有一个 pl sql 过程,我们在其中获取具有多条记录的 xml 数据,首先存储在临时表中,通过验证或在循环中对接收到的 xml 进行一些检查后,我们将插入另一个表,这是最终的表,有时由于某种原因很少有记录没有被推送到最终表, 现在在循环结束时的相同 plsql 代码中,我们需要重新检查临时表说表 A 中的所有行是否都插入到另一个表说 B 中。 前任: 表 A 中包含列的员工记录

<Employee>
Empid, empname, empdesg, empaddr,empemail, empMobNo
</Employee>

表 B 中有列的员工记录

<Employee>
EmpNo, empFirstName, EmpLevel, empAddress, empContactDetails, empPhNum
</Employee>

现在我们有 30 条员工记录从源到 plsql 存储在表 A 中,但由于某些原因只有 27 条插入到表 B 中,需要比较表 B 中丢失的记录并将它们重新插入到表 B 中基于empid/empNo的表A。

请建议如何做到这一点。

【问题讨论】:

  • 我认为您可以在这里使用 MINUS 运算符。
  • 欢迎来到 SO 社区。请花几分钟时间来查看Tour 并查看How to Ask。您的描述使您的临时表中的某些行似乎未通过检查,因此未写入永久表。这似乎是完全正常的 和预期的 处理。但是现在你想以任何方式推送那些失败的行。如果是这样,那为什么还要花时间做检查呢?

标签: sql oracle join plsql


【解决方案1】:

这就是想法:

   INSERT INTO B
    SELECT * FROM A WHERE empid IN
    (
    SELECT empid FROM A
    MINUS
    SELECT empNo FROM B
    );

【讨论】:

    最近更新 更多