题
我有以下SQL表:
A|B
---
w|x
x|w
y|z
z|y
我可以构造查询,这将产生以下结果:
A|B
---
w|x
y|z
要总结,我想以治疗两列作为一组无序,使得(A,B)==(B,A)。
解决方案
在 “最好的”码取决于数据库,但以下是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