【问题标题】:Comparing records in duplicate tables in different oracle databases比较不同oracle数据库中重复表中的记录
【发布时间】:2013-11-30 03:55:15
【问题描述】:

我在两个 oracle 数据库中有同一张表。一个是暂存数据库,它的记录已加载到主数据库中。我想查看临时表,看看主记录是否没有变化。如果没有,则将其删除。我该怎么做?

【问题讨论】:

  • 您应该添加表模式以便更轻松地为您提供帮助。

标签: sql oracle


【解决方案1】:

要获取发生变化的内容,您可以使用:

SELECT * FROM "staging_table"
MINUS
SELECT * FROM "table";

所以,假设表有一个主键,那么你可以这样做

DELETE FROM "table"
WHERE primary_key_column
      NOT IN 
      ( SELECT primary_key_column
        FROM (
          SELECT * FROM "staging_table"
          MINUS
          SELECT * FROM "table"
        )
      );

【讨论】:

  • 如果选择 *,暂存表和生产表必须具有相同的结构。这会让我觉得很不寻常。
  • 如果它们不一样,那么您可以将*s 替换为共享列。
【解决方案2】:

这样的东西应该可以工作

delete from stagingtable
where id in
(select id
from stagingtable st join productiontable pt on st.id = pt.id
and st.nextfield = pt.nextfield
etc
)

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2013-08-17
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    相关资源
    最近更新 更多