Comparing the Contents of Two Tables:
 create table a
(
c1 int,
c2 varchar(3),
c3 varchar(3)
)
                                                    
create table b
(
c1 int,
c2 varchar(3),
c3 varchar(3)
)
insert into a values(1,'x','y')
insert into a values(2,'xx','y')
insert into a values(3,'x','y')
insert into b values(1,'x','y')
insert into b values(2,'x','y')
insert into b values(3,'x','yy')
select * from a
   C1   C2   C3
-----   --   --
    1    x    y
    2   xx    y
    3    x    y
select * from b
  C1    C2    C3
-----    --    --
  1     x     y
  2     x     y
  3     x    yy
The first rows are the same, but the second and third rows differ. This is how we can find them:
 
select i.c1,i.c2, i.c3,
           count(i.src1) CNT1,
            count(i.src2) CNT2
       from
     ( select a.*,
            1 src1,
            null as src2
         from a
        union all
      select b.*,
           null as src1,
           2 src2
        from b
     )i
    group by i.c1,i.c2,i.c3
   having count(i.src1) <> count(i.src2)
  C1     C2       C3       CNT1         CNT2
 ---      --     --        ----         ----
   2       x      y         0             1
   2       xx     y         1             0
   3       x      y         1             0
   3       x      yy        0             1
The below link having the script in Oracle: 
http://karthikeyanbaskaran.blogspot.com/2010/02/comparing-contents-of-two-tables.html
Tuesday, February 9, 2010
Comparing the Contents of Two Tables
8:53 AM
  
  No comments
Subscribe to:
Post Comments (Atom)
 






 
 
0 comments:
Post a Comment