oracle - 在插入到 oracle 表之前比较差异
问题描述
您能否告诉我如何比较表和我的选择查询之间的差异并将这些结果插入单独的表中?我的计划是通过使用 select 语句创建一个基表(名称 RESULT)并用当前结果集填充它。然后第二天我想创建一个程序,它将相同的选择与 RESULT 表进行比较,并将差异插入另一个名为 DIFFERENCES 的表中。
有任何想法吗?
谢谢!
解决方案
您可以按如下方式创建RESULT_TABLE
using :CTAS
CREATE TABLE RESULT_TABLE
AS SELECT ... -- YOUR QUERY
然后,您可以使用以下过程计算您的查询和数据之间的差异RESULT_TABLE
:
CREATE OR REPLACE PROCEDURE FIND_DIFF
AS
BEGIN
INSERT INTO DIFFERENCES
--data present in the query but not in RESULT_TABLE
(SELECT ... -- YOUR QUERY
MINUS
SELECT * FROM RESULT_TABLE)
UNION
--data present in the RESULT_TABLE but not in the query
(SELECT * FROM RESULT_TABLE
MINUS
SELECT ... );-- YOUR QUERY
END;
/
我已经UNION
以不同的顺序使用了它们之间的和差异,用于MINUS
在表中插入已删除的数据DIFFERENCES
。如果这不是要求,则UNION
根据您的要求在之后/之前删除查询。
推荐阅读
- amazon-web-services - Dynomodb 的 Amazon Api Gateway 服务代理
- java - 编写正则表达式模式以便于理解/维护?
- jquery - 对特定列进行排序不起作用 - jquery Datatables
- react-native - 打开另一个屏幕 React-navigation 3.. flatlist
- import - 导入 SQL Google Cloud SQL:HTTPError 403:权限不足
- python - 获取包含修饰函数的文件的路径
- keras - 定义具有附加权重的自定义 keras 层时如何使用 GRUCell?
- python - Tensorflow/Keras:模型的输出层期望的输入形状与它收到的不同
- sql - SQL的列级加密在哪里使用?
- css - svg中的响应式图像