SQL删除重复的父子项

SQL删除重复的父子项,sql,sql-server,Sql,Sql Server,我试着四处寻找这个问题,但找不到太多。我想知道删除SQL表中重复的父/子行的最佳方法 例如,我有一个这样的表: Id | CompanyId | DuplicateId 1 | 1 | 2 2 | 2 | 1 <------ CompanyId 2 is already a duplicate of 1 3 | 2 | 3 任何帮助或指向正确的方向都是非常好的。谢谢 编辑:我使用的是Microsoft S

我试着四处寻找这个问题,但找不到太多。我想知道删除SQL表中重复的父/子行的最佳方法

例如,我有一个这样的表:

Id | CompanyId | DuplicateId
1  |     1     |     2
2  |     2     |     1    <------ CompanyId 2 is already a duplicate of 1
3  |     2     |     3
任何帮助或指向正确的方向都是非常好的。谢谢


编辑:我使用的是Microsoft SQL Server,这里有一种方法适用于大多数数据库:

delete from sqltable
     where duplicateid > companyid and
           exists (select 1
                   from sqltable st2
                   where st2.duplicateid = sqltable.companyid and
                         st2.companyid = sqltable.duplicateid
                  );
试试这个

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

对不起,Microsoft SQL Server。我会在里面编辑我的帖子这正是我要找的。我甚至没有想到要使用大于子句。谢谢就像对戈登说的,这正是我要找的东西。谢谢:
SELECT * FROM tablename t1 where CompanyId not IN  (SELECT Duplicateid from  
tablename WHERE CompnayId<>t1.CompanyId and duplicateid > companyid)