我不完全确定如何说出这一点,而且我一般都是SQL的新手,但基本上在我的group_memberships
表中我有user_id
列,{{1 }和group_id
。我想看看两个用户(user1和user2)是否共享同一个组(即他们是同一组的一部分)和如果user1的permission_level
为{{1}并且user2的permission_level
为1
(即user1是user2' s)。
该查询可能非常激烈,但我不确定。我甚至在谷歌搜索如何做到这一点很困难。
答案 0 :(得分:2)
你可以自我加入:
SELECT
*
FROM group_memberships gm1 -- for the "first" user
JOIN group_memberships gm2 ON TRUE -- for the "second" user
AND gm1.group_id = gm2.group_id
AND gm1.user_id != gm2.user_id -- prevent joining to the same tuples
WHERE TRUE
AND gm1.permission_level = 0
AND gm2.permission_level = 1
-- additional conditions can go here, eg:
-- AND gm1.userid = X
-- AND gm2.userid = Y