【发布时间】:2018-07-20 00:20:54
【问题描述】:
我必须比较两个表中的数据。目前有一个存储过程,其中过程的逻辑是 选择第一个表数据减去第二个表数据,反之亦然。如果计数匹配,则将消息硬编码为“匹配”,否则为“不匹配”
我的疑问: 我可以用减号运算符以外的方式更改过程的逻辑吗? 有什么建议吗?
select count(*) into t1 from c1;
select count(*) into t2 from c2;
select count(*) into t3 from(
select a1,a2,a3 from c1
minus
select a1,a2,a3 from c2);
select count(*) into t4 from(
select a1,a2,a3 from c2
minus
select a1,a2,a3 from c1);
select count(*) into t5 from(
select a1,a2,a3 from c2
Intersect
select a1,a2,a3 from c1);
Insert into A1
SELECT t1,t2,t3,t4,t5,(CASE WHEN T4=0 THEN ‘MATCHED’
ELSE ‘NOT MTACHED’
END) STATUS ,’ ‘
FROM DUAL;
【问题讨论】:
-
如果集合算子有效,为什么要改变它?
-
它是什么样子的。
-
@tbone 是的,集合运算符绝对有效,我只是想尝试一些可以更好地提高性能的先进方法
-
在大多数情况下,您很难胜过集合运算符。但是贴出代码,让我们看看
-
@tbone 我给出了代码的骨架,因为它是特定于项目的。
标签: oracle plsql union-all nested-queries