これは、テーブル全体に一致するペアを見つけるソリューションです。必要に応じて、where句を追加してフィルタリングできます。基本的に、等しい「メンバー」と等しくない「id」に基づいて自己結合を行います。次に、2つのIDでグループ化された結果のカウントを比較し、それらを元のテーブルのIDの合計カウントと比較します。両方が一致する場合、それはそれらがまったく同じメンバーを持っていることを意味します。
select
t1.id, t2.id
from
table t1
inner join table t2
on t1.member = t2.member
and t1.id < t2.id
inner join (select id, count(1) as cnt from table group by id) c1
on t1.id = c1.id
inner join (select id, count(1) as cnt from table group by id) c2
on t2.id = c2.id
group by
t1.id, t2.id, c1.cnt, c2.cnt
having
count(1) = c1.cnt
and count(1) = c2.cnt
order by
t1.id, t2.id
これは私が使用したサンプルデータで、(1,3)と(6,7)の一致を返しました。
insert into table
values
(1, 'abc'), (1, 'pqr'), (2, 'xyz'), (3, 'pqr'), (3, 'abc'), (4, 'abc'), (5, 'pqr'),
(6, 'abc'), (6, 'def'), (6, 'ghi'), (7, 'abc'), (7, 'def'), (7, 'ghi')