【问题标题】:Deleting all but one record of duplicate entries [duplicate]删除除一条重复条目之外的所有记录[重复]
【发布时间】:2014-08-15 21:04:41
【问题描述】:

我正在使用 SQL Server 2005,并希望删除日期最早的重复记录。例如,我有一个培训数据库,其中包含员工编号、班级名称和日期。有些人上过不止一次课,但我们只需要保留最近一次上课的记录。

【问题讨论】:

    标签: sql


    【解决方案1】:

    我会在CTE 中使用ROW_NUMBER

    WITH CTE AS
    (
        SELECT  ID, Scan, TrainingDate, TrainingType, 
            rn = ROW_NUMBER() Over (Partition By Scan, TrainingType 
                                    Order By TrainingDate DESC)
        FROM dbo.SETD_SimpleScan
    )
    DELETE FROM CTE WHERE rn > 1
    

    DELETE 替换为SELECT * 以查看您要删除的内容。

    【讨论】:

    • 我不明白答案。我的表名是 SETD_SimpleScan。这些列是 ID (PK)、Scan、TrainingDate 和 TrainingType。使用此信息查询会如何?
    • 我想删除包含每个 Scan 的每个 TrainingType 的较早 TrainingDate 的记录。
    • 查询解析但是当我去运行它时,SQL Server Managment Studio 关闭。
    • @PeggyHall:它在 SQL-Server 2005 中没有问题(我也在使用它)。但是如果你在那里使用 SSMS 中的编辑器会崩溃。至少我有这个问题,前段时间我什至在这里asked a question。只需设计并在普通查询窗口中运行即可。
    • 忽略我的上一篇文章。现在所有重复项都消失了!那太酷了!!!不知道为什么它会起作用,但非常感谢它起作用了!
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2018-10-16
    • 1970-01-01
    • 2015-11-18
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多