• ベストアンサー

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文を記述すればよいでしょうか。 よろしくお願いします。

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

  • ベストアンサー
回答No.7

#6ですが、間違っているので、訂正。 select B from TBL where A between 1 and 10 group by B having count(distinct A) = 10; が正しい。

youyouyou--
質問者

お礼

ありがとうございます。 教えていただいたSQLでできました。

その他の回答 (6)

回答No.6

もっとも短い書き方は、 select B from TBL where A between 1 and 10 group by B having count(distinct B) = 10; ですかね。(これ以上簡素な書き方はないハズ)

  • agricap
  • ベストアンサー率40% (79/195)
回答No.5

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)
回答No.4

select 列B from テーブル where 列A between 1 and 10 という話ではなくて、でしょうか? この質問分だけでは今ひとつやりたい事がはっきりしないので、詳しく説明していただきたく(上記のSQLだと、どのように「やりたい事」の通りにならないのか)存じます。

  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.3

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)
回答No.2

select 列B from テーブル名 where 列A between 1 and 10; でどうでしょ?

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

select B from XX where (A >= 1 AND A <= 10) でだめ?

関連するQ&A