これが私のテーブルです
|a_id|b_id|
|x |y |
|y |x |
|d |c |
|c |d |
|... |... |
もっとたくさん...
すべてのペアを取得するための最良の方法は何ですか? たとえば、上記の例から (x と y) と (d と c)
特定のIDなしでSQLを使用したことはありません
select t1.a_id
, t1.b_id
from YourTable t1
join YourTable t2
on t1.a_id = t2.b_id
and t1.b_id = t2.a_id
where t1.a_id > t2.a_id
SELECT a_id, b_id
FROM TableName
WHERE (LEAST(a_id, b_id), GREATEST(a_id, b_id), a_id) in
(
SELECT LEAST(a_id, b_id) as x,
GREATEST(a_id, b_id) as y,
MIN(a_id) as a_id
FROM TableName
GROUP BY x, y
)
もっと簡単にできます:
SELECT LEAST(a_id, b_id) AS a, GREATEST(a_id, b_id) AS b
FROM tbl
GROUP BY 1, 2;