如何比较pl / sql块中的两个不同的表

时间:2014-02-17 10:13:14

标签: sql oracle

如何比较pl / sql块中的两个不同表

表A- T_tABLE1

BIZDAY  DATE    
ACID    NUMBER(12,0)    
TYPE    VARCHAR2(10 CHAR)
ADJDATE DATE        
SOURCE  VARCHAR2(20 CHAR)
DATEUPDATED DATE    

表2:

BIZDAY  DATE    
ACID    NUMBER  
TYPE    VARCHAR2(20 BYTE)
ADJDATE DATE    
SOURCE  VARCHAR2(20 BYTE)
DATEUPDATED DATE

2 个答案:

答案 0 :(得分:0)

获取差异的计数

select count(*) 
  from 
(
( select * from table1
  minus 
  select * from table2 )
union all
( select * from table2 
  minus
  select * from table1 )
);

将告诉你table1中有多少行不在table2 + table2中而不在table1

获取实际数据比较

select *
  from 
(
( select * from table1
  minus 
  select * from table2 )
union all
( select * from table2 
  minus
  select * from table1 )
);

另一种方法:

在11gR1之前使用DBMS_RECTIFIER_DIFF

从11gR1或以上使用DBMS_COMPARISON

答案 1 :(得分:0)

如果表具有主键,则还可以使用完全外部联接来查找两个表之间的差异。请参阅此fiddle