Oracle
 sql >> база данни >  >> RDS >> Oracle

Доказване на еквивалентност на SQL заявка

Най-доброто, което можете да направите, е да сравните 2 изхода на заявка въз основа на даден набор от входни данни, търсейки някакви разлики. Да се ​​каже, че те винаги ще връщат едни и същи резултати за всички входове наистина зависи от данните.

За Oracle един от най-добрите, ако не и най-добрите подходи (много ефективен) е тук (Ctrl +F Сравняване на съдържанието на две таблици):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html

Което се свежда до:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на C# с Oracle

  2. Обектът на Oracle в рамката на VS entity не актуализира първичния ключ в кода

  3. Форматирайте число като процент в Oracle

  4. Как да се свържа с отдалечена Oracle DB с PL/SQL Developer?

  5. Актуализирайте изявление с клауза with