OracleのSQLではNOT EXISTSという便利な命令が使用できます。NOT EXISTS句の副問合せ条件に一致しなければ結果を返却してくれます。
また、NOT EXISTS句を使わなくてもLEFT JOINで代用できますので、LEFT JOINでNOT EXISTSを実現する方法も紹介します。
前提条件
TB_MAINのレコード
SELECT ID,NAME FROM TB_MAIN; ID NAME ------- 1 キリン 2 猿 3 たぬき
TB_SUBのレコード
SELECT ID FROM TB_SUB; ID -- 2
NOT EXISTSのサンプルSQL(TB_MAINからTB_SUBのID以外のレコードを抽出)
SELECT X.ID ,X.NAME FROM TB_MAIN X WHERE NOT EXISTS ( SELECT * FROM TB_SUB Y WHERE X.ID = Y.ID ) ; ID NAME ------- 1 キリン 3 たぬき
LEFT JOINのサンプルSQL(TB_MAINからTB_SUBのID以外のレコードを抽出)
SELECT X.ID , X.NAME FROM TB_MAIN X LEFT JOIN TB_SUB Y ON X.ID = Y.ID WHERE Y.ID IS NULL ; ID NAME ------- 1 キリン 3 たぬき
LEFT JOINは複数テーブルとJOINしているついでにNOT EXISTSの様な条件を、簡単に付ける事ができるので使いどころはあるかと思います。
以上です。