我试过四处寻找这个问题但找不到多少。我想知道在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
任何帮助或指向正确的方向都会很棒。谢谢!
编辑:我正在使用Microsoft SQL Server
答案 0 :(得分:1)
这是一种适用于大多数数据库的方法:
delete from sqltable
where duplicateid > companyid and
exists (select 1
from sqltable st2
where st2.duplicateid = sqltable.companyid and
st2.companyid = sqltable.duplicateid
);
答案 1 :(得分:0)
试试这个
SELECT * FROM tablename t1 where CompanyId not IN (SELECT Duplicateid from
tablename WHERE CompnayId<>t1.CompanyId and duplicateid > companyid)