Sql 删除除一条记录外的所有重复条目
我正在使用SQL Server 2005,希望删除具有最早日期的重复记录。例如,我有一个培训数据库,可以捕获员工编号、班级名称和日期。有些人上过不止一次课,但我们只需要保存最近一次上课的记录。我会用在:Sql 删除除一条记录外的所有重复条目,sql,Sql,我正在使用SQL Server 2005,希望删除具有最早日期的重复记录。例如,我有一个培训数据库,可以捕获员工编号、班级名称和日期。有些人上过不止一次课,但我们只需要保存最近一次上课的记录。我会用在: 用SELECT*替换DELETE,查看要删除的内容。我不明白答案。我的表名是SETD_SimpleScan。列包括ID(主键)、扫描、培训日期和培训类型。查询与此信息的关系如何?每次扫描时,我想删除包含每个培训类型的较早培训日期的记录。查询会进行分析,但当我运行它时,SQL Server Man
用
SELECT*
替换DELETE
,查看要删除的内容。我不明白答案。我的表名是SETD_SimpleScan。列包括ID(主键)、扫描、培训日期和培训类型。查询与此信息的关系如何?每次扫描时,我想删除包含每个培训类型的较早培训日期的记录。查询会进行分析,但当我运行它时,SQL Server Management Studio会关闭。@PeggyHall:它在SQL Server 2005中正常工作(我也在使用它)。但是如果在SSMS中使用编辑器,它会崩溃。至少我有这个问题,我很久以前就在这里了。只需在普通的查询窗口中设计并运行它。忽略我的上一篇文章。所有的复制品现在都不见了!太酷了!!!不知道它为什么起作用,但非常感谢它起了作用!
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