🧑‍🤝‍🧑

SQLで2つのカラムでユニークな組み合わせをクエリする

2021/02/16に公開

SQLでユニークな組み合わせ

忘備録です。
例えば、下記のようなテーブル pairs があったとき

pairs

user_a user_b
1 2
2 1
3 1
1 3
1 4
5 1

user_a と user_b の組み合わせがユニークなペア(順不同)を取りたいとき、同一のテーブルを外部結合するとうまく取れます。

SELECT DISTINCT p1.user_a, p1.user_b 
FROM pairs p1 
LEFT OUTER JOIN pairs p2
  ON p1.user_a = p2.user_b
  AND p2.user_a = p1.user_b 
WHERE 
  p1.user_a < p1.user_b 
  OR p2.user_a IS NULL;

Result

user_a user_b
1 2
1 3
1 4
5 1

おしまい。
もっと賢い方法あったら教えて下さい。

Discussion