Oracle Database テーブル同士の差分を取得する

Oracle Database テーブル同士の差分を取得する

Oracle Databaseで、テーブル同士の差分を取得する手順を記述してます。「MINUS」で対象のテーブルをSELECTした結果で可能です。ここでは、実際に実行した結果を画像で掲載してます。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition
  • SQL Developer 21.2.1.204

手順

テーブル同士の差分を取得するには、「MINUS」を使用します。

SELECT * FROM テーブル1;
MINUS
SELECT * FROM テーブル2;

実際に、以下の2つのテーブル「SAMPLE」から「SAMPLE2」との差分を取得してみます。

テーブル「SAMPLE」

テーブル「SAMPLE2」

取得してみます。

SELECT * FROM SAMPLE
INTERSECT
SELECT * FROM SAMPLE2;

実行結果を見ると、差分が取得できていることが確認できます。

テーブルの順序を逆にすると、「SAMPLE2」から「SAMPLE」の差分が取得できます。

SELECT * FROM SAMPLE
MINUS
SELECT * FROM SAMPLE2;

実行結果

型違い

比較カラムの方が違う場合は、エラーとなります。

ORA-01790: 式には対応する式と同じデータ型を持つ必要があります
01790. 00000 -  "expression must have same datatype as corresponding expression"
*Cause:    
*Action:
行1 列8でエラー