如果同一组中有两个用户,则显示SQL查询

时间:2009-10-22 20:06:59

标签: sql mysql

我有一个包含3个表的数据库:用户,组和组成员。

users:
id int
username varchar(50)

groups:
id int
name varchar(50)

groupmembers:
id int
groupid int
user int

给定两个用户ID,我如何使用一个查询来确定它们是否共享任何组(不是任何特定组,而是任何组)的成员资格。我希望查询在没有成员资格时返回null,如果他们共享成员资格则不返回。

2 个答案:

答案 0 :(得分:1)

可替换地

select count(*) from groupmembers 
  where user=@user1 
    and groupid in 
      (select groupid from groupmembers where user=@user2)

这将返回共同的群组数。您可以使用以下内容替换count *)来测试计数:

IF(count(*)>0,1,Null)

答案 1 :(得分:0)

这是一个SQL,它将返回两个用户都是

成员的组
SELECT g1.id
FROM groupmembers g1 join groupmembers g2 on g1.id = g2.id
WHERE g1.user = @user1
AND g2.user = @user2;

如果只想返回'1'或'Null',您可以将其包装如下

With groupcount as (
    SELECT count(*) gc
    FROM groupmembers g1 join groupmembers g2 on g1.id = g2.id
    WHERE g1.user = @user1
    AND g2.user = @user2)
SELECT Case When gc = 0 Then Null Else 1 End as SharedGroups
FROM groupcount;