私はキーをフィルタリングしてキーのリストを取得する必要があるこのようなテーブルを持っています。特定のキーを含めてリストを取り出す方法は?
id key
1 1
1 2
1 3
1 4
2 1
2 3
3 1
3 4
4 1
4 4
所望の出力:ここで私はキー1が存在し、2が欠落しているキーであるのidすなわち(2,3)のリストを取得したい
id key
2 1
2 3
3 1
3 4
。
私はキーをフィルタリングしてキーのリストを取得する必要があるこのようなテーブルを持っています。特定のキーを含めてリストを取り出す方法は?
id key
1 1
1 2
1 3
1 4
2 1
2 3
3 1
3 4
4 1
4 4
所望の出力:ここで私はキー1が存在し、2が欠落しているキーであるのidすなわち(2,3)のリストを取得したい
id key
2 1
2 3
3 1
3 4
。
「ここで私はキー1が存在し、キー2が見つからないIDのリストを取得したいと思っています。
あなたがexists
と
not exists
を使用することができます
:
select t.*
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.key = 1) and
not exists (select 1 from t t2 where t2.id = t.id and t2.key = 2);
あなただけのidをしたい場合は、私が集約してhaving
を好む:
select id
from t
group by id
having sum(case when key = 1 then 1 else 0 end) > 0 and
sum(case when key = 2 then 1 else 0 end) = 0;
これはうまく動作します。それは私に別個のIDを与えますが、それらを数えれば1をすべて得ます。何か案が?少しの説明もすばらしいでしょう。 –
'sum()'や 'count()'を使っていますか? –
私は数を試してから、そのIDに1を与えてくれました。 –
は、あなたのテーブル名が、その後によると「テスト」されていると上記の出力がSQLクエリになります
SELECT * FROM testing
WHERE key
!= 2 and id in(2,3)
「ここに1があり、2がありません」と明記してください。 "希望の出力"セクションによれば、WHERE句(WHERE id> 1とid <4)などを書いていますが、あなたのすべてのケースを解決できないような気がします。 – RemedialBear
@ChirayuChamoli 。 。 id = 3はkey = 1を持っていません。 –