我有一个非常基本的mysql表名为membership,它跟踪哪些人属于哪些组。人们可以属于许多群体。
它包含3个字段:id,person_id,group_id
我需要选择group_ids为'20'和'53'的所有person_ids。人民必须只属于这两个群体。
答案 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
格式。