MySQL 查询以搜索所有列,其中 2 列共享相同的 1 列
MySQL Query to search for all columns where 2 columns share the same 1 column
我不完全确定如何表达这个,而且我对 SQL 总体来说是新手,但基本上在我的 group_memberships
table 中我有列 user_id
、group_id
和 permission_level
。我想看看两个用户(user1 和 user2)是否共享同一个组(即他们都是同一组的一部分)and 如果 user1 有 permission_level
of 1
并且 user2 的 permission_level
为 0
(即 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
我不完全确定如何表达这个,而且我对 SQL 总体来说是新手,但基本上在我的 group_memberships
table 中我有列 user_id
、group_id
和 permission_level
。我想看看两个用户(user1 和 user2)是否共享同一个组(即他们都是同一组的一部分)and 如果 user1 有 permission_level
of 1
并且 user2 的 permission_level
为 0
(即 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