【问题标题】:Delete Duplicate SQL Records删除重复的 SQL 记录
【发布时间】:2010-10-24 21:29:48
【问题描述】:

删除表中具有重复名称的记录的最简单方法是什么?我遇到的答案非常混乱。

相关:

Removing duplicate records from table

【问题讨论】:

  • 除了名字还有键吗?您要删除 ALL 还是 ALL 但 ONE?
  • 它们是否真的重复,因为两行的每一列都相同?
  • 另外,目标 DBMS 是什么?
  • 有一个外键,我不得不删除它。它们不是相同的行,并且具有唯一的主键“id”

标签: sql duplicates


【解决方案1】:

我明白了!简单而且效果很好。

delete 
   t1 
from 
   tTable t1, tTable t2 
where 
   t1.locationName = t2.locationName and  
   t1.id > t2.id 

http://www.cryer.co.uk/brian/sql/sql_delete_duplicates.htm

【讨论】:

  • 回答您自己的问题并获得代表。有趣。
  • 我认为这没有问题,因为即使回答您自己的问题也可以为社区提供价值。
  • 我同意。一些用户陷入了代表积分竞赛。我可能无法回答我的问题,但我想保存并分享它,以供我自己和社区参考。这个问题之前在堆栈溢出时被问过,但答案并不直接(大多数使用游标或 for 循环)。
  • 甚至还有一个徽章用于回答您自己的问题并获得选票。 stackoverflow.com/badges/14/self-learner
  • 你没有得到代表回答。但如果其他人觉得它有帮助,那么你实际上已经帮助了其他人,所以我认为这是应得的。
【解决方案2】:

SQL Server 2005:

with FirstKey
AS
(
    SELECT MIN(ID), Name, COUNT(*) AS Cnt
      FROM YourTable
     GROUP BY Name
     HAVING COUNT(*) > 1
)
DELETE YourTable
  FROM YourTable YT
  JOIN FirstKey FK ON FK.Name = YT.Name AND FK.ID != YT.ID

【讨论】:

    猜你喜欢
    • 2016-01-07
    • 2020-07-16
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多