1

これが私のテーブルです

|a_id|b_id|
|x   |y   |
|y   |x   |
|d   |c   |
|c   |d   |
|... |... |

もっとたくさん...

すべてのペアを取得するための最良の方法は何ですか? たとえば、上記の例から (x と y) と (d と c)

特定のIDなしでSQLを使用したことはありません

4

3 に答える 3

3
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

SQL Fiddle の例。

于 2013-03-29T15:50:55.543 に答える
2
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
)
于 2013-03-29T15:48:21.600 に答える
0

もっと簡単にできます:

SELECT LEAST(a_id, b_id) AS a, GREATEST(a_id, b_id) AS b 
FROM   tbl
GROUP  BY 1, 2;

SQLフィドル

于 2013-03-29T15:59:34.490 に答える