質問
私は、次の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
LEAST
とGREATEST
を使用することもw x
ではなくx w
の返されることを確認します。
所属していません StackOverflow