我的关系看起来像这样
CREATE TABLE table_name (
letter1 text,
letter2 text)
INSERT INTO table_name (letter1, letter2) VALUES ('A', 'B')
INSERT INTO table_name (letter1, letter2) VALUES ('B', 'A')
letter1 letter2
--------------------
A B
B A
但是,我想删除重复的组合,使(A,B)=(B,A),以便只剩下其中一个。
我现在很困惑。我尝试使用带有条件的选择,还尝试创建另一个表进行比较,然后使用选择,但我迷路了。
答案 0 :(得分:1)
您可以这样做:
delete t
where l1 > l2 and
exists (select 1
from t t2
where t2.l2 = t1.l1 and t2.l1 = t1.l2
);
如果只想选择不同的对,则可以执行以下操作:
select l1, l2
from t
where l1 < l2
union all -- or union if you need to remove duplicates
select l2, l1
from t
where l2 > 1 and
not exists (select 1
from t t2
where t2.l2 = t1.l1 and t2.l1 = t1.l2
);