3 つのグループ (1、2、3) すべてに含まれるオブジェクトのみを選択しようとしています。
「WHERE gid IN (1,2,3)」を選択すると、OR 選択が取得されます。必要なのは AND 選択です。
OBJECT_TABLE AS o
id | field1 | field2 | ...
VALUES
1, a, b
2, c, d
3, e, f
...
GROUP_XREF_TABLE AS gx
oid | gid
VALUES
1, 1
1, 2
1, 3
2, 2
3, 1
3, 2
...
SELECT DISTINCT o.id, gx.gid FROM `OBJECT_TABLE` AS o
LEFT JOIN `GROUP_XREF_TABLE` AS gx ON o.id = gx.oid
WHERE gx.gid IN (1,2,3)
これにより、すべての行が出力されます。オブジェクト ID が 1 の行のみを出力する WHERE 句が必要です。そのオブジェクトのみが 3 つのグループすべてに含まれているからです。
より大きな選択の一部であるため、これは where ステートメント内でのみ実行することが重要です (必要に応じて、サブ選択で問題ありません)。