• ベストアンサー

テーブルAにあって、テーブルBにないデータ抽出

このようなデータのテーブルがあります。 テーブルA key ID ----------------- 1 AAAAA 2 BBBBB 3 CCCCC 4 DDDDD 5 EEEEE 6 FFFFF 7 GGGGG 8 HHHHH 9 IIIII テーブルB key ID ----------------- 1 AAAAA 2 CCCCC 3 EEEEE 4 FFFFF 5 HHHHH 6 IIIII 7 JJJJJ 8 KKKKK 9 LLLLL この場合テーブルAのIDの中で、テーブルBのIDには存在しない行を取り出すのに、プログラムを使わずに取得する方法はありますか? この例だと取得するはずの行は key ID ----------------- 2 BBBBB 4 DDDDD 7 GGGGG になります。 どうかよろしくお願いします。

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

  • ベストアンサー
回答No.1

お使いのRDBが不明なので、ごく標準的なSQLで回答すると・・ select * from A where not exists(select 1 from B where A.Key=BKey) で良いかと思います。

その他の回答 (4)

回答No.5

SQLを見て、直感的に差分検索とすぐ分かるのは、 NOT EXISTSかNOT INを使用した検索です。

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.4

leftジョインに1票入れます

  • taskuni
  • ベストアンサー率71% (49/69)
回答No.3

訂正 >LEFT JOINして、テーブルBのカラムがNullになる行を除外しています。 LEFT JOINして、テーブルBのカラムがNullになる行を選択しています。

  • taskuni
  • ベストアンサー率71% (49/69)
回答No.2

こんなのはどうでしょう。 select * FROM A left join B using(ID) where B.ID is null LEFT JOINして、テーブルBのカラムがNullになる行を除外しています。

関連するQ&A