mysql查找匹配的行集

iezvtpos  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(544)

我有一个交叉引用表,它提供了用户和用户组表之间的多对多关系。它包含两个相关列: group_id 以及 user_id (惊喜,惊喜!)。当一个用户想要创建一个新的组时,我首先要检查这组用户是否已经作为一个组存在。
从本质上讲,我将问题定义为“给定一组用户id,查找与该组用户id匹配的任何行集,并且所有行都共享相同的组id”。
编辑:
我寻找的是一组确切的用户,在resultset组中,除了其他用户之外,还包括这些用户,这并不有趣。
样本数据

我有预感,子查询是一种方式,但我不知道如何安排它。任何帮助都将不胜感激!

js81xvg6

js81xvg61#

这就是你想要的吗?

select groupid
from usergroups ug
where userid in ($user1, $user2, . . . , $usern)
group by groupid
having count(*) = <n>;

这将返回具有提供的用户列表的所有组。
如果您想要精确的设置,那么:

select groupid
from usergroups ug
group by groupid
having count(*) = sum( userid in ($user1, $user2, . . . , $usern) );

这假设组没有两次相同的用户(这并不难调整,但情况变得更复杂)。

相关问题