如何删除有些重复的行?

时间:2019-02-03 20:25:51

标签: sql sqlite

我的关系看起来像这样

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),以便只剩下其中一个。

我现在很困惑。我尝试使用带有条件的选择,还尝试创建另一个表进行比较,然后使用选择,但我迷路了。

1 个答案:

答案 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
                 );