首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle -来自两个表的两行之间的差异或更改

Oracle -来自两个表的两行之间的差异或更改
EN

Stack Overflow用户
提问于 2009-10-19 21:23:30
回答 3查看 29.4K关注 0票数 3

我有两个表都有相同的模式,一个将有前一天的记录,另一个将有当前。我希望将两者进行比较,并且只查找更改,或者只查找至少一列中具有不同值的行。

这在pl/sql,oracle中是怎么可能的呢?(我在T-SQL中使用校验和编写了类似的代码,但不确定在pl/sql中该如何做)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-19 22:09:53

这个答案提供了一个非常有效的解决方案,使用Oracle比较两个查询的结果:Proving SQL query equivalency

票数 3
EN

Stack Overflow用户

发布于 2009-10-19 21:36:50

您需要一个异或查询,它本质上是一个(A-B) U (B-A)查询:

代码语言:javascript
复制
(SELECT * FROM TODAY_TABLE
MINUS
SELECT * FROM YESTERDAY_TABLE)
UNION ALL
(SELECT * FROM YESTERDAY_TABLE
MINUS
SELECT * FROM TODAY_TABLE)

这个查询还可以很容易地得到改进,还可以使用一个额外的计算列显示哪些记录是插入、删除和更改。

票数 3
EN

Stack Overflow用户

发布于 2009-10-20 08:21:57

作为Dougman posted,比较两个数据集的最有效方法之一是对它们进行分组。我通常使用这样的查询来比较两个表:

代码语言:javascript
复制
SELECT MIN(which), COUNT(*), pk, col1, col2, col3, col4
  FROM (SELECT 'old data' which, pk, col1, col2, col3, col4
           FROM t
         UNION ALL
         SELECT 'new data' which, pk, col1, col2, col3, col4 FROM t_new)
 GROUP BY pk, col1, col2, col3, col4
HAVING COUNT(*) != 2
 ORDER BY pk, MIN(which);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1591243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档