MINUS(マイナス)は落とし穴があるので気を付けて下さい。
MINUSは最初のSELECT文が母数になるようです。そのため、MINUSを使ってデータの差分を抽出したい場合、データ件数が多い方のテーブルを最初にSELECTしないと差分が正しく抽出できません。
下記にサンプルSQLを記載します。
MINUSの注意点
TB_MINUS_Aのレコード
SELECT * FROM TB_MINUS_A; NO NAME BIRTH_YMD --------------- 1 東京 太郎 1980/01/01 2 東京 次郎 2000/01/01
TB_MINUS_Bのレコード
SELECT * FROM TB_MINUS_B; NO NAME BIRTH_YMD --------------- 1 東京 太郎 1980/01/01
MINUSを使って差分を抽出(TB_MINUS_Bを最初にSELECTする)
SELECT * FROM TB_MINUS_B MINUS SELECT * FROM TB_MINUS_A; レコードが選択されませんでした。
MINUSを使って差分を抽出(TB_MINUS_Aを最初にSELECTする)
SELECT * FROM TB_MINUS_A MINUS SELECT * FROM TB_MINUS_B; NO NAME BIRTH_YMD ---------- -------------------- -------------------- 2 東京 次郎 2000/01/01
TB_MINUS_Aテーブルよりレコードが少ないTB_MINUS_Bを最初にSELECTすると、差分が出力されません。TB_MINUS_Aを母数として差分を検索しているためです。MINUSの落とし穴ですので、気をつけて下さい。
私は本番環境でのデータパッチ作業でミスするところでした。