質問: sqlでの抽出条件 sql初心者です。初歩的な質問だと思いますが、ご教授願います。 以下のような2つのテーブルがあります。 【テーブルa】 グループ 社員番号 a 1 a 2 a 3 b 4 b 5 b 6 c 7 c 8 d 9 d 1 【テーブルb】 社員番号 1 9 テーブルbの社員番号と一致する場合、テーブルaをグループ単位で抽出しないようにしたいです。 ・グループaは社員番号1が一致するため抽出しない。 ・グループdは社員番号1と9が一致するため抽出しない。 【取得結果】 グループ 社員番号 b 4 b 5 b 6 c 7 c 8 説明が分かりづらくて申し訳ありませんが、よろしくお願い致します。
回答: select * from テーブルa a1 where not exists ( select 1 from テーブルa a2 where a1.グループ=a2.グループ and exists ( select 1 テーブルb from テーブルb b where a2.社員番号 = b.社員番号 )); のようなやり方もあります。 select * from テーブルa where グループ not in ( select グループ from テーブルa where 社員番号 in ( select 社員番号 from テーブルb )); も。