SQL删除重复的父子项
我试着四处寻找这个问题,但找不到太多。我想知道删除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
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)