- ベストアンサー
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文が思いつかず大変困っています。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (1)
- SaKaKashi
- ベストアンサー率24% (755/3136)
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
お礼
こちらのSQL文でも目的を達することができました。 参考にさせていただきます。 この度は親切にお教えいただき、感謝してもしきれません。
お礼
お教えくださったSQL文で無事目的を達しました。 ありがとうございました。 感謝してもしきれません。