0

メンバーシップと呼ばれる非常に基本的なmysqlテーブルがあり、どのユーザーがどのグループに属しているかを追跡します。人々は多くのグループに属することができます。

id、person_id、group_idの3つのフィールドが含まれています

group_idsが「20」と「53」のすべてのperson_idsを選択する必要があります。人々はそれらの2つのグループだけに属していなければなりません。

4

1 に答える 1

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フォーマットに行くことができますが。

于 2012-06-20T17:20:09.750 に答える