给定以下架构:
User
id
Group
id
Membership
group_id
user_id
(With a unique index on group_id, user_id)
我将如何选择相同的两个用户所属的组?
我现在拥有的:
SELECT "Membership"."group_id"
FROM "Membership"
WHERE "Membership"."user_id" IN (1, 2)
GROUP BY "Membership"."group_id"
HAVING COUNT("Membership"."group_id") >= 2
这似乎有效(它只返回两个用户都是其成员的组 ID),但看起来相当混乱。
有没有更好的方式来表达这个查询?
编辑
所以给出以下数据:
Users
-----
id
1
2
3
Group
-----
id
1
2
3
Membership
----------
group_id user_id
1 1
1 2
2 1
2 3
3 2
3 3
我想找到用户 1 和 2 都是其成员的组。
所以 user_id 1 和 2 的查询结果应该是组 1。对 user_id 1 和 3 的相同查询应该返回组 2。而对 user_id 2 和 3 的查询应该返回组 3。