Как удалить несколько дублирующихся строк? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть такое отношение, которое выглядит следующим образом

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 голосов
/ 03 февраля 2019

Вы можете сделать:

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
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...