【发布时间】:2013-11-30 03:55:15
【问题描述】:
我在两个 oracle 数据库中有同一张表。一个是暂存数据库,它的记录已加载到主数据库中。我想查看临时表,看看主记录是否没有变化。如果没有,则将其删除。我该怎么做?
【问题讨论】:
-
您应该添加表模式以便更轻松地为您提供帮助。
我在两个 oracle 数据库中有同一张表。一个是暂存数据库,它的记录已加载到主数据库中。我想查看临时表,看看主记录是否没有变化。如果没有,则将其删除。我该怎么做?
【问题讨论】:
要获取发生变化的内容,您可以使用:
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 替换为共享列。
这样的东西应该可以工作
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
)
【讨论】: