当前位置: 首页 > 知识库问答 >
问题:

如何在SQL中删除重复记录?[副本]

梁池暝
2023-03-14

这是我的原始表格:

预期表:

我无法向表中添加新列。

共有3个答案

皇甫喜
2023-03-14

您需要一些在没有PK的情况下识别行的方法。

我能想到的唯一方法是:

  1. 检索行的“行ID”
  2. 然后为每个非唯一行选择一个作为“好的一个”
  3. 最后删除所有其他的

不过,我对这个解决方案并不乐观。我认为这个答案有助于生成与众不同的行ID。我希望有帮助。

裴存
2023-03-14

可以使用公共表表达式删除一组重复项中除第一条记录外的所有记录:

with cte as (
    select *, row_number()
     over (partition by FirstName, LastName, Age order by FirstName, LastName, Age) as row_number
    from tbl
)
delete from cte where row_number <> 1
穆博简
2023-03-14

您可以使用删除重复项,即行号()

with duplicates as
(
    select
        *
        ,ROW_NUMBER() OVER (PARTITION BY FirstName, LastName, age ORDER BY FirstName) AS number
    from yourTable
)
delete 
from duplicates
where number > 1

number大于1的每一行都是重复的。

 类似资料:
  • 问题内容: 我有一个sql server数据库,我已经预加载了大量的数据行。 不幸的是,数据库中没有主键,并且表中现在有重复的信息。我不担心没有主键,但是我担心数据库中存在重复项… 有什么想法吗?(原谅我成为sql server newb) 问题答案: 好吧,这就是为什么您应该在表上拥有主键的原因之一。什么版本的SQL Server?对于SQL Server 2005及更高版本: 然后,您不必在明

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

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

  • 问题内容: 嗨,在这里我遇到了一种情况,即由于错误地没有删除表,我已经运行了该表的批处理文件,该文件由一些详细的插入语句组成 我有一个像alert_priority的表由类似 现在错误地没有删除 alert_priority 我已经执行了表的脚本文件,其中包含一些插入语句,现在执行脚本后,我在表中的记录就像 现在,我想删除多余的记录(Id 3之后的记录),并且在执行脚本文件之前,我应该拥有所有存在

  • 问题内容: 使用rails或mysql查询删除mysql数据库中重复记录的最佳方法是什么? 问题答案: 您可以通过以下方式将不同的记录复制到新表中:

  • 问题内容: 我正在看一个问题:从SQLite表获取随机值,这使我想知道是否可以使用SQL复制记录。更具体地说,有没有一种可以转换这些记录的构造: 进入: 后者中的和记录的计数与前一组记录中的对应值匹配。 可以用SQL完成吗?如果是这样,怎么办? 编辑: Lucero问什么SQL方言?任何真的,但理想情况下,最不可知论的方法都是最好的。 另一个编辑: 是否可以在sqlite中的单个SQL语句中完成?