重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になっております
select文を教えて下さい

A   B
123  0
123  0
123  1
123  1
124  0
124  1
124  2
125  0
125  1
125  1

Aの項目でグルーピングしBが0のデータが2件以上あるケースを選択したいのですが良く分かりません。
上記の場合は、A=123のケースだけを選択したいのですが
どなたかご教示下さい。

A  B
123  0
123  0

という結果になるようにSQLを組み立てたいのですが
よろしくお願いします。

A 回答 (2件)

特定のRDBMSで実行するなら、RDBMS名やバージョンを


書きましょう。
せっかくSQLを具体的に教えてもらっても、あなたの
環境では実行できないかも知れません。

情報処理技術者試験の受験対策といった理由なら、
そういった情報を書きましょう。
特定のRDBMSの独自機能を使ったSQLを教えられても、
正解にはなりません。

B=0での抽出なので、A列の値だけ分かればいいなら、
以下のようなSQLでいいと思います。

select A
from T1
where B=0
group by A
having count(*)>=2;

他にC列などがあり、その値も得たいということなら、
以下のようなSQLでいいと思います。

select A,C
from T1
where A=(select A from T1
where B=0
group by A
having count(*)>=2
)
and B=0;

また、#1回答者さんのSQLでも大丈夫だと思いますが、
不要な括弧が多いので簡単に書くと、以下のように
なります。

select A,C
from T1 as x
where (select count(*)
from T1 as y
where x.A=y.A and y.B=0)>=2
and x.B=0;

私が使っているRDBMSでは、列(A,B)にインデクスを
付けた場合、二番目のSQLの方が、効率的にインデクス
が使われるようです。
    • good
    • 0

SELECT jiji.A, jiji.B


FROM jiji
WHERE (((jiji.B)=0) AND (((select count(*) from jiji as jiji2 where jiji2.A=jiji.A and jiji2.B=0))>1));
    • good
    • 0

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