1

colA から colB とペアになったすべての行を返すクエリが必要ですが、同じ値を反対方向に重複として扱い、削除する必要があります。

このクエリを説明する最良の方法は、例です。

colA | colB
-----------
abc  | def
def  | abc
asdf | 1234
1234 | asdf
other| row
1234 | test

SQLマジック

colA | colB
-----------
abc  | def
asdf | 1234
other| row
1234 | test

他の方向に「重複」している行を削除します。

4

3 に答える 3

2

「クリーンな」SQL ソリューション (least()またはなしgreatest()) を好む場合は、これでも問題ありません。

select colA, colB from your_table
where colA > colB 
  or (colB, colA) not in (select colA, colB from your_table)

SQLフィドル

于 2013-05-02T16:45:07.223 に答える
1

これを試して:

select t3.colA,t3.colB
from table_name t3
where (t3.colA,t3.colB)
not in
(select greatest(t1.colA, t1.colB), least(t1.cola, t1.colB)
from table_name t1 , table_name t2
where t1.colB=t2.colA and t1.colA=t2.colB
group by greatest(t1.colA,t1.colB), least(t1.cola, t1.colB))

SQL フィドル

于 2013-05-02T16:43:33.750 に答える