【问题标题】:Removing duplicate rows but retaining unique copy删除重复行但保留唯一副本
【发布时间】:2013-03-15 05:44:06
【问题描述】:

我得到了一个如下形式的 SQL 表:-

Name     Age
Kim       5
Tom       8
Jim       12
Kim       5
David     21
Jim       12

在上述场景中,Kim 和 Jim 是重复的,它们存在两次。

如果我有一个上述表格的大表,大约有 60000 个条目,我如何编写一个 sql 查询来仅删除重复项但仍保留唯一项?

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-delete


    【解决方案1】:

    借助Common Table ExpressionWindow Function,您可以轻松删除重复记录。

    WITH dups
    AS
    (
        SELECT  Name, Age,
                ROW_NUMBER() OVER (PARTITION BY Name, Age ORDER BY Age DESC) rn
        FROM    TableName
    )
    DELETE FROM dups
    WHERE   rn > 1
    

    【讨论】:

    • 嘿,JW,根据您的查询,dups 是什么?只是一个小小的困惑
    • 这是CTE的名称
    • 嘿,JW,最后一个疑问..假设我想删除第 5 行,我该如何设计 d qeury?类似,从表名中删除 rownumber=5;
    • 你的意思是第五行包括重复项吗?
    • no no JW....只是一般查询...如果我只想删除表的第五行,什么是正常的sql查询???
    猜你喜欢
    • 2021-12-28
    • 2019-10-27
    • 2022-11-03
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多