アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなデータがあります。

・列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文を記述すればよいでしょうか。

よろしくお願いします。

A 回答 (7件)

#6ですが、間違っているので、訂正。



select B from TBL where A between 1 and 10 group by B having count(distinct A) = 10;

が正しい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/22 13:09

もっとも短い書き方は、



select B from TBL where A between 1 and 10 group by B having count(distinct B) = 10;

ですかね。(これ以上簡素な書き方はないハズ)
    • good
    • 0

No.3の改良です。

ただ、このSQLがあらゆるソフトで正しいSQLとして
解釈されるかどうかはわかりません。

SELECT B
FROM (SELECT DISTINCT * FROM T)
WHERE A between 1 and 10
GROUP BY B
HAVING COUNT(B)=10;
    • good
    • 0

select 列B


from テーブル
where 列A between 1 and 10

という話ではなくて、でしょうか?

この質問分だけでは今ひとつやりたい事がはっきりしないので、詳しく説明していただきたく(上記のSQLだと、どのように「やりたい事」の通りにならないのか)存じます。
    • good
    • 0

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がカブル場合
    • good
    • 0

select 列B from テーブル名


where 列A between 1 and 10;

でどうでしょ?
    • good
    • 0

select B from XX where (A >= 1 AND A <= 10)


でだめ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!