- ベストアンサー
テーブル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 になります。 どうかよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
お使いのRDBが不明なので、ごく標準的なSQLで回答すると・・ select * from A where not exists(select 1 from B where A.Key=BKey) で良いかと思います。
その他の回答 (4)
- chukenkenkou
- ベストアンサー率43% (833/1926)
SQLを見て、直感的に差分検索とすぐ分かるのは、 NOT EXISTSかNOT INを使用した検索です。
- webuser
- ベストアンサー率33% (372/1120)
leftジョインに1票入れます
- taskuni
- ベストアンサー率71% (49/69)
訂正 >LEFT JOINして、テーブルBのカラムがNullになる行を除外しています。 LEFT JOINして、テーブルBのカラムがNullになる行を選択しています。
- taskuni
- ベストアンサー率71% (49/69)
こんなのはどうでしょう。 select * FROM A left join B using(ID) where B.ID is null LEFT JOINして、テーブルBのカラムがNullになる行を除外しています。