看似简单的mysql查询,证明很难

看似简单的mysql查询,证明很难,mysql,Mysql,我有一个非常基本的mysql表,名为memberships,它跟踪哪些人属于哪些组。人可以属于许多群体 它包含3个字段:id、人员id、组id 我需要选择组ID为“20”和“53”的所有人员ID。这些人必须只属于这两个群体 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 memb

我有一个非常基本的mysql表,名为memberships,它跟踪哪些人属于哪些组。人可以属于许多群体

它包含3个字段:id、人员id、组id

我需要选择组ID为“20”和“53”的所有人员ID。这些人必须只属于这两个群体

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;
尽管你也可以选择一种格式