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 by
和 having
查找这些组:
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 提供的解决方案可能更好(更有效)。
我有 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 by
和 having
查找这些组:
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 提供的解决方案可能更好(更有效)。