当前位置: 首页 > 面试题库 >

SQL:删除SQL Server中的重复记录

杨君之
2023-03-14
问题内容

我有一个sql server数据库,我已经预加载了大量的数据行。

不幸的是,数据库中没有主键,并且表中现在有重复的信息。我不担心没有主键,但是我担心数据库中存在重复项…

有什么想法吗?(原谅我成为sql server newb)


问题答案:

好吧,这就是为什么您应该在表上拥有主键的原因之一。什么版本的SQL Server?对于SQL Server 2005及更高版本:

;WITH r AS
(
    SELECT col1, col2, col3, -- whatever columns make a "unique" row
    rn = ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY col1)
    FROM dbo.SomeTable
)
DELETE r WHERE rn > 1;

然后,您不必在明天,第二天及之后的第二天再次执行此操作,只需在表上声明一个主键即可。



 类似资料:
  • 本文向大家介绍sql 删除表中的重复记录,包括了sql 删除表中的重复记录的使用技巧和注意事项,需要的朋友参考一下 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) 然后就可以直接删除,基本原理就是,找到重复记录的每一条记录,排除掉重复id最小的记录,删除剩余的重复

  • 问题内容: 请帮助我了解基于rownum的删除记录,即使id重复,也不会发生,但是如果是这样的话。 查询已尝试,但删除所有6行。 但是此查询给出正确的结果: 预期结果 : 问题答案: 使用 当然,您也可以这样做。该所以你是否删除具有较大的行或较小的地址不要紧只是该行的物理地址。 但是,您的预期结果没有任何意义。 该结果集的总是在查询时分配。这意味着在不同的查询中(或同一查询多次运行时)特定的行可能

  • 这是我的原始表格: 预期表: 我无法向表中添加新列。

  • 问题内容: 这个问题已经在这里有了答案 : SQL中的TRUNCATE和DELETE有什么区别 (32个答案) TRUNCATE vs DELETE FROM的利弊 (11个答案) 6年前关闭。 关于mysql / sqlserver,我的脑海里发生了一件事,即 删除/截断 哪个更好更快? 在哪里使用删除? 在哪里使用截断? 问题答案: 删除 DELETE是DML命令。 使用行锁执行DELETE语

  • 问题内容: 我有一个重复的表事务。我想保留具有最小id的记录,并基于四个字段DATE,AMOUNT,REFNUMBER,PARENTFOLDERID删除所有重复项。我写了这个查询,但是我不确定这是否可以有效地编写。您认为有更好的方法吗?我问是因为我担心运行时间。 问题答案: 做这样的事情可能会更有效

  • 问题内容: 如何从以以下方式设置的表中删除重复项? 一个工作人员可以有多个与他们相关联的type_ID,我想删除所有重复的类型。如果有重复项,我想删除具有最新条目的类型。 问题答案: 窗口函数row_number()的教科书候选: 这也照顾了一组相同的受骗者的情况。 请参阅有关data.SE的简化演示。 更新较简单的版本 事实证明,这可以简化:在SQL Server中,您可以直接从CTE中删除: