Oracle
 sql >> Base de données >  >> RDS >> Oracle

Prouver l'équivalence des requêtes SQL

Le mieux que vous puissiez faire est de comparer les 2 résultats de la requête en fonction d'un ensemble donné d'entrées à la recherche de différences. Dire qu'ils renverront toujours les mêmes résultats pour toutes les entrées dépend vraiment des données.

Pour Oracle, l'une des meilleures sinon la meilleure approche (très efficace) est ici (Ctrl +F Comparaison du contenu de deux tables) :
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

Ce qui revient à :

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