MySQL 查询以搜索所有列,其中 2 列共享相同的 1 列

MySQL Query to search for all columns where 2 columns share the same 1 column

我不完全确定如何表达这个,而且我对 SQL 总体来说是新手,但基本上在我的 group_memberships table 中我有列 user_idgroup_idpermission_level。我想看看两个用户(user1 和 user2)是否共享同一个组(即他们都是同一组的一部分)and 如果 user1 有 permission_level of 1 并且 user2 的 permission_level0(即 user1 是 user2 的管理员)。

该查询可能非常激烈,但我不确定。我什至在谷歌上搜索如何做到这一点都很难。

您可以进行自我加入:

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