• ベストアンサー

SQL文を教えてください

以下のようなテーブルがあります。 IDとnameは複合ユニークキーとなっています。 ID | name 1 | foo 2 | foo 1 | bar 3 | foo 2 | hoge 3 | bar このテーブルから、nameにfooとbar両方を持つIDを抜き出すSQL文が分からずに困っています。 つまり、fooとbarで検索するとID 1とID 3が、fooとhogeで検索するとID 2がヒットするようなSQL文を知りたいのです。 初歩的な質問なのかもしれませんが、どうしてもSQL文が思いつかず大変困っています。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

foo+barなら SELECT ID FROM tbl WHERE name IN ('foo','bar') GROUP BY ID HAVING count(*)=2 foo+hogeなら SELECT ID FROM tbl WHERE name IN ('foo','hoge') GROUP BY ID HAVING count(*)=2

hearthewindsong
質問者

お礼

お教えくださったSQL文で無事目的を達しました。 ありがとうございました。 感謝してもしきれません。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

select * from xxxxx where id in ( select id from xxxxx where name in ('foo' ,'bar') group by id having count(*) > 1 ) / 条件を変えるには、inの中を変える。 ID NAME ---------- -------------------- 1 foo 2 foo 1 bar 3 foo 2 hoge 3 bar 6行が選択されました。 ID NAME ---------- -------------------- 1 bar 1 foo 3 bar 3 foo ID NAME ---------- -------------------- 2 hoge 2 foo

hearthewindsong
質問者

お礼

こちらのSQL文でも目的を達することができました。 参考にさせていただきます。 この度は親切にお教えいただき、感謝してもしきれません。

関連するQ&A