🧑🤝🧑
SQLで2つのカラムでユニークな組み合わせをクエリする
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