程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Oracle两张表数据比较的几种方式(oracle两张表数据同步)

balukai 2025-06-13 11:22:53 文章精选 2 ℃

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)

Tags:

最近发表
标签列表