0
我有一个非常基本的mysql表称为memberships,它跟踪哪些人属于哪个组。人们可以属于很多群体。看似简单的mysql查询,证明是艰难的
它包含3个字段:ID,为person_id,GROUP_ID
,我需要选择所有具有 '20' 和 '53' 的group_ids的person_ids。人们只能属于这两个群体。
我有一个非常基本的mysql表称为memberships,它跟踪哪些人属于哪个组。人们可以属于很多群体。看似简单的mysql查询,证明是艰难的
它包含3个字段:ID,为person_id,GROUP_ID
,我需要选择所有具有 '20' 和 '53' 的group_ids的person_ids。人们只能属于这两个群体。
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
格式。
很好,谢谢! –