2017-01-12 7 views
0

私はuser_idとgroup_idのテーブルを持っています。私は両方のグループに属するユーザのリストを回復する必要があります。ユーザが同時に2つのグループを持つ場所を選択します

SELECT * FROM [user_group] 

私のテーブルには、私は両方のグループ1にあり、3 は、だから私はuser_idの1と4

を回復することを選択する必要があるユーザーを回復する必要があり、この

User_Id | Group_id | 
========================= 
1   |  1  
2   |  2  
1   |  3  
4   |  3  
4   |  5  
4   |  2  
4   |  1  
4   |  10 

のようなものです私は何をすべきですか?私はtempTableに挿入しようとし、INとOrで選択しようとしました。

+0

SELECT [User_Id] FROM [User_group] WHERE [Group_Id] IN (1,3) GROUP BY [User_Id] HAVING COUNT(Group_id) > 1 

それとも別の方法を? –

+0

@aあなたは実際に質問を読んだことがありますか?それは望ましい出力を持っています – Jamiec

+0

実際には、フォーマットされたテキストとして望ましい出力を指定することは良い考えです。 – jarlh

答えて

4

havingcount distinctを組み合わせて使用​​すると、両方のGroup_id値を持つUser_Idのみが返されるため、GROUP BYを実行します。

select User_Id 
from tablename 
where Group_id in (1, 3) 
group by User_Id 
having count(distinct Group_id) = 2 
+0

ありがとうございました。 –

1

このお試しください:plzは所望の出力のためのセクションを追加します(ちょうど楽しみのため)

SELECT 
    ug1.User_Id 
FROM 
    [user_group] ug1 JOIN [user_group] ug2 
    ON ug1.User_Id = ug2.User_Id 
WHERE 
    ug1.Group_id =1 AND ug2.Group_id =3 
+0

@TimSchmelterそれを見て、ただそれを修正しました。 – DVT

+0

それも働いて、ありがとう。 –

関連する問題