Как удалить дубликаты на основе условия в 2 столбцах, используя SQL - PullRequest
0 голосов
/ 31 января 2020

У меня есть следующая таблица. Я хочу удалить повторяющиеся строки и сохранить ту, которая имеет Name1 = Name2. Итак, в приведенном ниже примере строки 2 и 4 должны быть удалены.

ID | Name1 | Name2
 1 | n1    |  n1
 1 | n1    |  n2
 2 | n1    |  n1
 2 | n1    |  n2

Как я могу сделать это с SQL запросом?

1 Ответ

1 голос
/ 31 января 2020

Я думаю, что это то, что вы хотите:

delete from t
    where t.name1 <> t.name2 and
          exists (select 1
                  from t t2 
                  where t2.id = t.id and
                        t2.name1 = t2.name2
                 );

Если вы просто хотите select, это можно сделать аналогично:

    select t.*
    from t
    where t.name1 = t.name2 or
          not exists (select 1
                      from t t2 
                      where t2.id = t.id and
                            t2.name1 = t2.name2
                     );
...