- ベストアンサー
片方のテーブルに存在しないレコード取得したい
OracleのSQL文を教えて下さい。 -tableA- key1,key2 001,1 002,2 002,1 003,2 -tableb- key1,key2 001,1 002,1 取得したいレコード 002,2 003,2 お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
select * from tableA where not exists ( select * from tableB where tableA.key1 = tableB.key1 and tableA.key2 = tableB.key2 ); でどうでしょう?
その他の回答 (2)
- Mizyu
- ベストアンサー率41% (245/593)
回答No.3
> EXISTSとどちらが早いんでしょうね。 私の同僚の話ですと、どちらも僅差であり、状況によって変わる、とのことです。 多分、内部での検出のロジックは同じ道を辿るのではないでしょうか? ですから、ソースに落としたときにわかりやすい方をお勧めします。
- Mizyu
- ベストアンサー率41% (245/593)
回答No.2
SELECT Key1,Key2 from tableA MINUS SELECT Key1,Key2 from tableb ; でできます。 速度的には一件ずつの比較になるので遅いです。
質問者
お礼
できました。 ありがとうございます。 EXISTSとどちらが早いんでしょうね。
お礼
できましたー! ありがとうございました。