• ベストアンサー

複数条件検索

素人質問で申し訳ありません。 複数条件で、視認性を上げるためにINを使ったりしますが INはOR検索ですよね、このような感じのAND条件を書く方法はないでしょうか? field=1 AND field=2 AND field=3 ↓ ○○ (1,2,3) のように書きたいのです。 お願いします。

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

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

そういうのは書き方があります。 //準備 create table hoge (id int,sub_key int,item_id int); insert into hoge values (1,1,3),(2,1,4),(3,1,5), (4,2,3),(5,2,4), (6,3,3),(7,3,3),(8,3,4),(9,3,4), (10,4,3),(11,4,4),(12,4,4),(13,4,5),(14,4,6); さてここで検証するとsub_key=1は合致するのでOK、同2は2個しかないのでNG、 同3は見た目上4個あるけどユニークなものが2個しかないのでNG、 同4はかぶってたり余計なデータがあるけど合致するのでOK //表示 select sub_key from hoge where item_id in (3,4,5) group by sub_key having count(distinct item_id)=3

hornest
質問者

お礼

素晴らしい! ありがとうございます、勉強になりました!^ー^

その他の回答 (1)

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

>field=1 AND field=2 AND field=3 考えてみてくださいfieldが1かつ2かつ3である可能性はゼロです。 そもそもそのロジックは間違っているので、そのような書き方はできません

hornest
質問者

補足

すみません、説明が下手でした>< id, sub_key, item_id 1 1     3 2 1     4 3 1     5 のようなテーブルがあった場合に、3も4も5も満たすsub_keyを取得したいのです。 INだと3だけでもHITしてしまうので、3,4,5のレコードがあった場合に取得する方法 をご教示ねがえれば幸いです