質問

私は、次のSQLテーブルを持っています:

A|B
---
w|x
x|w
y|z
z|y

私は次のような結果が得られるクエリを構築することができます:

A|B
---
w|x
y|z

は要約すると、私は(B)==(a、b)は、このような、順不同のセットとして2つの列を治療するためにたい。

役に立ちましたか?

解決

の "最良の" のコードをデータベースに依存しますが、以下は、DBMSに依存しないです。

SELECT      t.A,
            t.B
FROM        my_table t
LEFT JOIN   my_table t2
        ON  t.A = t2.B
        AND t.B = t2.A
        AND t.A < t.B
WHERE       t2.A IS NULL

他のヒント

あなたは以下のことを試みることができます

SELECT LEAST(a,b) a, GREATEST(a,b) b
FROM t
GROUP BY LEAST(a,b), GREATEST(a,b)
<時間>

次のテストテーブルt付きます:

CREATE TABLE t ( a VARCHAR(1), b VARCHAR(1) );

INSERT INTO t VALUES ('w','x'),('x','w'),('y','z'),('z','y');

それは返します:

w  x
y  z
LEASTGREATESTを使用することもw xではなくx wの返されることを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top