我有一个包含user_id和group_id的表,我需要恢复两个组中的用户列表。
SELECT * FROM [user_group]
我的桌子是这样的
User_Id | Group_id |
=========================
1 | 1
2 | 2
1 | 3
4 | 3
4 | 5
4 | 2
4 | 1
4 | 10
我需要恢复第1组和第3组中的用户 所以我需要一个选择恢复user_id 1和4
我该怎么办?我尝试插入一个tempTable并选择IN和Or。
答案 0 :(得分:4)
执行GROUP BY
,您使用having
与count distinct
结合使用,只返回具有Group_id值的User_Id。
select User_Id
from tablename
where Group_id in (1, 3)
group by User_Id
having count(distinct Group_id) = 2
答案 1 :(得分:1)
试试这个:
SELECT
[User_Id]
FROM
[User_group]
WHERE
[Group_Id] IN (1,3)
GROUP BY
[User_Id]
HAVING
COUNT(Group_id) > 1
或另一种方式(只是为了好玩)
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