2015-08-31 3 views
1

Я попытался оглянуться на эту проблему и не смог найти многого. Мне было интересно, как лучше всего удалять повторяющиеся родительские/дочерние строки в таблице SQL.SQL Удалите повторяющиеся родительские дочерние записи

Например у меня есть таблица, например, так:

Id | CompanyId | DuplicateId 
1 |  1  |  2 
2 |  2  |  1 <------ CompanyId 2 is already a duplicate of 1 
3 |  2  |  3 

Я хочу, чтобы выбрать все не дубликаты:

Id | CompanyId | DuplicateId 
1 |  1  |  2 
3 |  2  |  3 

Любая помощь или указав в правильном направлении, было бы здорово. Благодаря!

Edit: Я использую Microsoft SQL Server

+0

Oops жаль, Microsoft SQL Server. Я отредактирую свой пост с этим в нем – Ross

ответ

1

Вот один метод, который работает в большинстве баз данных:

delete from sqltable 
    where duplicateid > companyid and 
      exists (select 1 
        from sqltable st2 
        where st2.duplicateid = sqltable.companyid and 
         st2.companyid = sqltable.duplicateid 
       ); 
+0

Это именно то, что я ищу. Я даже не думал использовать более оговорку. Благодаря! – Ross

0

Попробуйте

SELECT * FROM tablename t1 where CompanyId not IN (SELECT Duplicateid from 
tablename WHERE CompnayId<>t1.CompanyId and duplicateid > companyid) 
+0

Как сказано Гордону, это именно то, что я ищу. Благодаря :) – Ross

Смежные вопросы