• ベストアンサー

片方のテーブルに存在しないレコード取得したい

OracleのSQL文を教えて下さい。 -tableA- key1,key2 001,1 002,2 002,1 003,2 -tableb- key1,key2 001,1 002,1 取得したいレコード 002,2 003,2 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mk33752
  • ベストアンサー率33% (1/3)
回答No.1

select * from tableA where not exists ( select * from tableB where tableA.key1 = tableB.key1 and tableA.key2 = tableB.key2 ); でどうでしょう?

wan-chan
質問者

お礼

できましたー! ありがとうございました。

その他の回答 (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 ; でできます。 速度的には一件ずつの比較になるので遅いです。

wan-chan
質問者

お礼

できました。 ありがとうございます。 EXISTSとどちらが早いんでしょうね。

関連するQ&A