Select 其中相同 table 的其他查询的计数

Select where count of other query of same table

我有 table "Members" 字段 ID,UserID,GroupID 我只想 select 每个成员的成员数大于 1 的 GroupID,如下所示:

ID  UserID  GroupID
1   1       1        /* we are selecting groups for guy with ID 1, here are 3 people */
2   2       1
3   3       1
4   1       2        /* here the guy is alone in group, ignore him! */
5   1       3        /* select this one too for guy 1, because #members>1 */
6   2       3   

表演组 select 为 ID 1 的人,包括同一组中必须至少有 2 个人,所以这将 return:1、3

但我不知道如何在 SQL 中做到这一点,我想做这样的事情,但是,它显然行不通:

SELECT GroupID
 FROM Members 
 WHERE UserID=1
  AND COUNT(
   SELECT UserID FROM Members WHERE GroupID=**currently iterated group**
  )>1;

有可能吗?

如果我没理解错的话,您需要至少有两名成员的群组,其中一名成员有 userid = 1。以下查询使用 group byhaving 查找这些组:

select m.groupId
from Members m
group by m.groupId
having count(*) > 1 and
       sum(case when m.userid = 1 then 1 else 0 end) > 0;

这将 return 包含用户 1 所属的多个成员的组:

select groupid 
from members 
where groupid in (select groupid from members where userid = 1) 
group by groupid having count(*) > 1;

@GordonLinoff 提供的解决方案可能更好(更有效)。