T-SQL - 如何编写查询以获取与多对多连接中的所有记录匹配的记录

Cor*_*ett 4 t-sql many-to-many

(我认为我没有正确地提出这个问题 - 但我不知道如何描述它)

这是我想要做的:

假设我有一个具有PersonID字段的Person表.让我们说一个人可以属于许多群体.因此,存在具有GroupID字段的Group表和GroupMembership表,GroupMembership表是两个表之间的多对多连接,GroupMembership表具有PersonID字段和GroupID字段.到目前为止,它是一个简单的多对多加入.

给定一个GroupID列表,我希望能够编写一个查询,返回所有这些组中的所有人(不是这些组中的任何一个).并且查询应该能够处理任意数量的GroupID.我想避免动态SQL.

是否有一些简单的方法可以解决这个问题?谢谢,科里

Jon*_*erg 6

select person_id, count(*) from groupmembership
where group_id in ([your list of group ids])
group by person_id
having count(*) = [size of your list of group ids]
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢dotjoe!