Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Äquivalenz von SQL-Abfragen beweisen

Das Beste, was Sie tun können, ist, die beiden Abfrageausgaben basierend auf einem bestimmten Satz von Eingaben zu vergleichen und nach Unterschieden zu suchen. Zu sagen, dass sie immer die gleichen Ergebnisse für alle Eingaben zurückgeben, hängt wirklich von den Daten ab.

Für Oracle ist einer der besseren, wenn nicht besten Ansätze (sehr effizient) hier (Ctrl +F Vergleich des Inhalts zweier Tabellen):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

Was auf Folgendes hinausläuft:

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);