【问题标题】:MySQL Query to search for all columns where 2 columns share the same 1 columnMySQL Query 搜索所有列,其中 2 列共享相同的 1 列
【发布时间】:2015-03-24 08:17:02
【问题描述】:

我不完全确定如何措辞,而且我一般是 SQL 新手,但基本上在我的 group_memberships 表中,我有列 user_idgroup_idpermission_level。我想看看两个用户(user1 和 user2)是否共享同一个组(即他们都是同一个组的一部分)如果 user1 有 permission_level1 并且 user2 有一个permission_level of 0(即 user1 是 user2 的管理员)。

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

【问题讨论】:

    标签: mysql sql querying


    【解决方案1】:

    您可以进行自我加入:

    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
    

    【讨论】:

    • 哦,我想我喜欢那里的 95%。我认为您上面的查询中也有错字。我认为AND gm1.user_id != gm2.user_id 是您想要的吗?现在我唯一在摆弄的是如何设置特定的user_ids 来查找。我不希望只有 user1 和 user2 的 all 匹配。谢谢!
    • 当然可以。感谢您指出了这一点。解决它。还添加了额外的条件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多