【问题标题】:SQL Remove duplicate parent child entriesSQL 删除重复的父子条目
【发布时间】:2015-08-31 18:56:34
【问题描述】:

我已尝试四处寻找此问题,但找不到太多。我想知道删除 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

【问题讨论】:

  • 抱歉,Microsoft SQL Server。我将在其中编辑我的帖子

标签: sql sql-server


【解决方案1】:

这是一种适用于大多数数据库的方法:

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

【讨论】:

  • 这正是我正在寻找的。我什至没想过要使用大于子句。谢谢!
【解决方案2】:

试试这个

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

【讨论】:

  • 就像对 Gordon 所说的那样,这正是我正在寻找的东西。谢谢:)
猜你喜欢
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 2021-01-22
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多