我有一个问题我找不到很好的解决办法。
我有带有GroupId和MemberId列的关系表MemberId。
我有一个存储过程,它创建一个新的组并接收一个memberId数组作为参数(用户定义的类型)。我想要的是确保数据库中没有一个成员完全相同的组。
我试图找出EXCEPT操作符如何帮助我,但我无能为力。我需要返回组的条件,该组的成员集合与memberId参数中的成员完全相同(如果不存在该组,则返回null或0)。
任何帮助都将不胜感激!
谢谢!
发布于 2013-11-08 08:07:37
Declare @Members table(id int)
insert into @Members
values(1), (3), (4)
Declare @MemberCount int
Select @MemberCount = count(id) From @Members
--Select GroupId from
--(Select distinct groupId, memberid from Groups_Members) gm
--Inner Join @Members On MemberId = id
--group by GroupId
--Having COUNT(MemberId) = @MemberCount当值(1),(3),(4) (它正确工作)。
但是当值(1),(2) (它不能正确工作)。
不错的尝试,但它没有提供与组成员的确切匹配。
尝试一下这个更好的解决方案
Select Gm.GroupId from
(Select distinct GroupId, memberid from Groups_Members) gm
Inner Join @Members On MemberId = id
Inner join (Select COUNT(MemberId) as Totalmember,GroupId
from Groups_Members group by GroupId) tgm on tgm.GroupId = gm.GroupId
where Totalmember = @MemberCount
group by gm.GroupId
Having COUNT(MemberId) = @MemberCount可按需提供说明。
https://stackoverflow.com/questions/19828630
复制相似问题