【Oracle SQL*Plus】SELECT結果の差分を出力:MINUS
備忘録になります。2つのSELECT文の結果の差を出すコマンドが「MINUS」になります。
表示例
SQL> SELECT * FROM TABLE_A;
NAME VAL1
---------- ----------
aaa 1111
bbb 2222
ccc 3333
SQL> SELECT * FROM TABLE_B;
NAME VAL1
---------- ----------
aaa 1111
bbb 4444
ccc 5555
ddd 6666
SQL> SELECT * FROM TABLE_A
2 MINUS
3 SELECT * FROM TABLE_B;
NAME VAL1
---------- ----------
bbb 2222
ccc 3333
SQL> SELECT * FROM TABLE_B
2 MINUS
3 SELECT * FROM TABLE_A;
NAME VAL1
---------- ----------
bbb 4444
ccc 5555
ddd 6666
レコードの順序はバラバラでも構いません。先に書くSELECT文の結果において、後に書くSELECT文の結果と同じレコードが表示されなくなります。
注意点
MINUS演算子で後に書くSELECT分の結果に余計なレコードが存在していても、結果に出力されません。2つのSELECT結果が完全一致しているか確認する場合、以下の2つの方法で用います。
- 引く側、引かれる側を入れ替えて、両面から差分が出力されない事を確認
- 片側だけMINUS結果を求める+COUNT関数を使ってレコード件数の一致を確認
関連記事
外部リンク