2012-06-20 38 views
0

我有一個非常基本的mysql表稱爲memberships,它跟蹤哪些人屬於哪個組。人們可以屬於很多羣體。看似簡單的mysql查詢,證明是艱難的

它包含3個字段:ID,爲person_id,GROUP_ID

,我需要選擇所有具有 '20' 和 '53' 的group_ids的person_ids。人們只能屬於這兩個羣體。

回答

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格式。

+0

很好,謝謝! –