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

时间:2012-06-20 17:10:05

标签: mysql

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

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

我需要选择group_ids为'20'和'53'的所有person_ids。人民必须只属于这两个群体。

1 个答案:

答案 0 :(得分: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格式。