入力を使用していない、要素の一つで結果セットからグループを除外する方法:SQL:サブクエリ
id group_id type_id
1 1 aaaaa
2 1 BAD
3 2 bbbbb
4 2 ccccc
5 3 ddddd
6 3 eeeee
7 3 aaaaa
- を私は出力にのみ
type_id <> 'BAD'
メンバーから成るgroup_id
秒を必要としています。少なくとも1つのBAD
メンバーを含むグループ全体を除外する必要があります。 - サブクエリ(またはCTEまたは
NOT EXISTS
またはビューまたはT-SQLインライン関数)の使用は許可されていません。 except
の使用は許可されていません。- カーソルの使用はできません。
上記のルールを無効にするすべてのソリューションが評価されます。どんなRDBMSでもOKです。
悪い例溶液(except
を使用して)、正しい結果を生成:
select distinct group_id
from input
except
select group_id
from input
where type_id = 'bad'
group by group_id, type_id
出力:
select group_id
from input
group by group_id
having min(type_id) = 'good' and max(type_id) = min(type_id);
この特定のバージョン:
group_id
2
3
私は私が間違っを尋ねたと思います私の実際のケースでは、 'type_id'は任意の値(nullではない)を取るかもしれませんが、値が1つだけ悪いです。答えはまだ素晴らしいです。 –