• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DBで指定した値しか存在しないデータを抽出する方法)

DBで指定した値しか存在しないデータを抽出する方法

このQ&Aのポイント
  • DBで指定した値しか存在しないデータを抽出する方法についてアドバイスをいただきたいです。
  • second_noが指定した値のデータを抽出するために、SQL文をどのように記述すればよいか分かりません。
  • 複数のパターンでsecond_noの値を指定し、それに基づいてデータを抽出したいです。

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

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

>組合せはユニークではなく、同じ値が存在しました。 じゃ、ちょっと工夫してこんな感じで? SELECT * FROM test_table WHERE no IN( SELECT no FROM (SELECT DISTINCT no,second_no FROM test_table) AS SUB GROUP BY no HAVING count(second_no)=2 AND sum(IF(second_no IN ('00','05'),1,0))=2 )

iroha_168
質問者

お礼

ご回答ありがとうございます。 ご教示いただいたSQL文で意図した動作になったと思います。 このたびはどうもありがとうございました。

その他の回答 (1)

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

追加条件が必要、noとsecond_noの組合せはユニークであること (つまりno=11にsecond_noが00であるものが2つないということ) それであれば思い付きこんな感じで・・・ (もっと効率的なのもありそうですが) SELECT * FROM test_table WHERE no IN( SELECT no FROM test_table GROUP BY no HAVING count(second_no)=2 AND sum(IF(second_no IN ('00','05'),1,0))=2 )

iroha_168
質問者

お礼

ご回答ありがとうございます。 確認した所、no と second_no の組合せはユニークではなく、同じ値が存在しました。 なお、同じ値が存在しない場合、ご教示いただいた SQL 文で動作する事は確認しました。 SELECT no FROM test_table GROUP BY no HAVING count(id) = 2 AND sum(IF(second_no IN ('00','05'),1,0)) = 2 それでこれは私のミスで大変申し訳ないのですが、 no と second_no の組合せはユニークで無い場合も、 【やりたい事1】の抽出ができる方法はないでしょうか? それと【やりたい事2】の1つの SQL 文で実現する方法をご教示いただきありがとうございました。 出来ましたら、no と second_no の組合せはユニークで無い場合も1つの SQL 文で動作する方法をご教示いただけますと大変助かります。 以上、よろしくお願いします。

関連するQ&A

専門家に質問してみよう