重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

このようなデータのテーブルがあります。

テーブル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

になります。

どうかよろしくお願いします。

A 回答 (5件)

お使いのRDBが不明なので、ごく標準的なSQLで回答すると・・



select * from A
where not exists(select 1 from B where A.Key=BKey)

で良いかと思います。
    • good
    • 4

SQLを見て、直感的に差分検索とすぐ分かるのは、


NOT EXISTSかNOT INを使用した検索です。
    • good
    • 0

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

    • good
    • 0

訂正



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

LEFT JOINして、テーブルBのカラムがNullになる行を選択しています。
    • good
    • 0

こんなのはどうでしょう。



select * FROM A left join B using(ID) where B.ID is null

LEFT JOINして、テーブルBのカラムがNullになる行を除外しています。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す