Oracle
 sql >> Database >  >> RDS >> Oracle

Dimostrazione dell'equivalenza delle query SQL

Il meglio che puoi fare è confrontare i 2 output della query in base a un determinato insieme di input alla ricerca di eventuali differenze. Dire che restituiranno sempre gli stessi risultati per tutti gli input dipende in realtà dai dati.

Per Oracle uno degli approcci migliori se non il migliore (molto efficiente) è qui (Ctrl +V Confronto dei contenuti di due tabelle):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

Che si riduce a:

select c1,c2,c3, 
       count(src1) CNT1, 
       count(src2) CNT2
  from (select a.*, 
               1 src1, 
               to_number(null) src2 
          from a
        union all
        select b.*, 
               to_number(null) src1, 
               2 src2 
          from b
       )
group by c1,c2,c3
having count(src1) <> count(src2);