0

我有一个非常基本的 mysql 表,称为成员资格,它跟踪哪些人属于哪些组。人们可以属于许多群体。

它包含 3 个字段:id、person_id、group_id

我需要选择所有 group_id 为“20”和“53”的 person_id。人们必须只属于这两个群体。

4

1 回答 1

2
SELECT DISTINCT a.person_id
FROM memberships a
JOIN memberships b
    ON a.person_id = b.person_id 
    AND b.group_id = 53
LEFT JOIN memberships c
    ON a.person_id = c.person_id 
    AND c.group_id NOT IN (20,53)
WHERE a.group_id  = 20 AND c.person_id IS NULL;

尽管您也可以选择一种NOT EXISTS格式。

于 2012-06-20T17:20:09.750 回答