sql >> データベース >  >> RDS >> Oracle

SQLクエリの同等性の証明

    最善の方法は、特定の入力セットに基づいて2つのクエリ出力を比較し、違いを探すことです。すべての入力に対して常に同じ結果が返されると言うことは、実際にはデータに依存します。

    Oracleの場合、最善ではないにしても優れたアプローチの1つ(非常に効率的)がここにあります( Ctrl + F 2つの表の内容の比較):
    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. SQLiteデータベースをExcelに変換するAndroidプログラム

    2. SQL Server ROWCOUNT_BIG()

    3. SQLiteで現在の時刻を取得する方法

    4. MySQLGROUPBYの動作