- ベストアンサー
SQL文 教えて下さい。
以下のようなデータがあります。 ・列Aにはが1~300までの値が格納。 ・列BにはA~Zまでの値が格納。 列B、A~Zの値に対して、 列Aの値は列1~300の値を複数持つことができます。 列A 列B ----------- 1 A 2 A 3 A 6 A 1 B 3 B : このとき、列Aの値のうち、1~10までの値を全て持つ列Bの値を抜き出すにはどういったSQL文を記述すればよいでしょうか。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#6ですが、間違っているので、訂正。 select B from TBL where A between 1 and 10 group by B having count(distinct A) = 10; が正しい。
その他の回答 (6)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
もっとも短い書き方は、 select B from TBL where A between 1 and 10 group by B having count(distinct B) = 10; ですかね。(これ以上簡素な書き方はないハズ)
- agricap
- ベストアンサー率40% (79/195)
No.3の改良です。ただ、このSQLがあらゆるソフトで正しいSQLとして 解釈されるかどうかはわかりません。 SELECT B FROM (SELECT DISTINCT * FROM T) WHERE A between 1 and 10 GROUP BY B HAVING COUNT(B)=10;
- erupi1973
- ベストアンサー率75% (27/36)
select 列B from テーブル where 列A between 1 and 10 という話ではなくて、でしょうか? この質問分だけでは今ひとつやりたい事がはっきりしないので、詳しく説明していただきたく(上記のSQLだと、どのように「やりたい事」の通りにならないのか)存じます。
- X-trail_00
- ベストアンサー率30% (438/1430)
select 列B from テーブル where 列A between 1 and 10 group by 列B having count(列B) = 10 列A、列Bだけで主キーに出来ないといけませんが・・・。 上記は下のパターンがある場合は上手くいきません・・・。 列A 列B ----------- 1 A 2 A 1 A 6 A 1 B 2 A といった感じで 列A、列Bがカブル場合
- bitsu
- ベストアンサー率34% (39/113)
select 列B from テーブル名 where 列A between 1 and 10; でどうでしょ?
- suzukikun
- ベストアンサー率28% (372/1325)
select B from XX where (A >= 1 AND A <= 10) でだめ?
お礼
ありがとうございます。 教えていただいたSQLでできました。