专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle两张表数据比较的几种方式 oracle对比两个表中字段不一致

ins518 2024-11-12 12:25:38 技术文章 12 ℃ 0 评论

Minus:返回的T1-T2是差集。

--两张表所选字段的内容进行比较,返回(表1-表2)的差,表中数据量较大使用并行方式/*+parallel(8)*/

select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from 表1 
minus
select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from 表2 

--上下表的顺序改变结果是不同的 ,返回(表2-表1)的差,

select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from 表2 
minus
select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from 表1 

intersect 获取两张表相同的部分

--两张表所选字段的交集,就是获取两张表相同的部分

select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from ydetl.表2 
intersect
select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from east.表1 

exists 存在于

exists比较难理解,看了很多解释,还是回归本源,作为使用者只要知道怎么用能够达到你的目的就够了。

1,两张表比较,必须带where条件进行两张表关联,不然结果不同。结果集是:LSH字段相同的情况下,表1 存在于表2 中的数据。

exists引导的子句有结果集返回true和false,select 1 这个1这个数字没有意义,是字段名也可以,是什么都可以,这个记住就行了。

select /*+parallel(8)*/ lsh, bxjgdm, bxjgmc, khbh from 表1  
where exists(select 1 from 表2 where 表1.lsh=表2.lsh and ……)

not exists 不存在于

两张表比较,需带where条件。结果集是:lsh和khbh字段相同的情况下,表1 不存在于表2 中的数据。

select /*+parallel(8)*/ lsh, bxjgdm, bxjgmc, khbh from 表1  
where not exists(select 1 from 表2 where 表1.lsh=表2.lsh and 表1.khbh=表2.khbh ……)

union all 两张表数据合集,字段数量要一致

union 两张表去重后的合集,字段数量要一致

总结:可以联合使用需要加()

(select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from ydetl.表2 
intersect
select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from east.表1 )
minus
(select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from ydetl.表3 
union
select /*+parallel(8)*/ LSH, BXJGDM, BXJGMC, KHBH from east.表4)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表