我有一个包含3个表的数据库:用户,组和组成员。
users:
id int
username varchar(50)
groups:
id int
name varchar(50)
groupmembers:
id int
groupid int
user int
给定两个用户ID,我如何使用一个查询来确定它们是否共享任何组(不是任何特定组,而是任何组)的成员资格。我希望查询在没有成员资格时返回null,如果他们共享成员资格则不返回。
答案 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;