sql >> Databáze >  >> RDS >> Oracle

Prokázání ekvivalence SQL dotazu

Nejlepší, co můžete udělat, je porovnat 2 výstupy dotazu na základě dané sady vstupů a hledat nějaké rozdíly. Tvrzení, že budou vždy vracet stejné výsledky pro všechny vstupy, skutečně závisí na datech.

Pro Oracle je zde jeden z lepších, ne-li nejlepší přístup (velmi efektivní) (Ctrl +F Porovnání obsahu dvou tabulek):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

Což se scvrkává na:

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


  1. Co je Oracle SQL &PL/SQL? Vše, co začátečník potřebuje vědět

  2. Porovnání poskytovatelů kompatibilních s Entity Framework pro Oracle?

  3. Cloud Migration 101:Přesun ze serveru SQL Server do Azure

  4. Úroveň izolace opakovatelného čtení