从属于组mysql的用户id中查找聊天组的组id

从属于组mysql的用户id中查找聊天组的组id,mysql,sql,Mysql,Sql,我正在开发一个聊天应用程序 如果组只包含两个具有给定sql查询的人,我可以找到组id 我的数据库结构是(userId和groupId是外键): 目前我找不到包含至少3人或更多人的对话组id。更具体地说,例如,该组包含4人。根据他们的id,我想找到组id。比如,给其中4个特定的人的组id是什么?它必须返回示例1(即groupId)。如果您想要包含三个人的组: select gu.group_id from groupusers gu where gu.user_id in (1, 2, 3) gr

我正在开发一个聊天应用程序

如果组只包含两个具有给定sql查询的人,我可以找到组id

我的数据库结构是(userId和groupId是外键):


目前我找不到包含至少3人或更多人的对话组id。更具体地说,例如,该组包含4人。根据他们的id,我想找到组id。比如,给其中4个特定的人的组id是什么?它必须返回示例1(即groupId)。

如果您想要包含三个人的组:

select gu.group_id
from groupusers gu
where gu.user_id in (1, 2, 3)
group by gu.group_id
having count(*) = 3;
如果只需要三个人,可以将条件移动到
having
子句:

select gu.group_id
from groupusers gu
group by gu.group_id
having sum(gu.user_id in (1, 2, 3)) = 3;

如前所述,这些查询假定
groupusers
没有重复的行。这似乎是一个合理的假设。如果允许重复,可以调整逻辑以使用
count(distinct)

您的预期输出是什么?问题已更新。您到底想要什么还不清楚。您编写的脚本返回GroupId 1,该聊天组中有3个用户。根据你的问题,我觉得这是要求:)@MertDoe。第二个问题回答了这个问题。
select gu.group_id
from groupusers gu
group by gu.group_id
having sum(gu.user_id in (1, 2, 3)) = 3;