我有一个表,其中有48个记录,称为Table1。其中只有24个应该在那里。出于某种原因,我将重复的记录插入到它中。如何删除该表中的重复记录。从表中删除重复记录
5
A
回答
5
这里的东西,如果SQL Server版本是2005或更高版本,你可以尝试。
WITH cte AS
(
SELECT {list-of-columns-in-table},
row_number() over (PARTITION BY {list-of-key-columns} ORDER BY {rule-to-determine-row-to-keep}) as sequence
FROM myTable
)
DELETE FROM cte
WHERE sequence > 1
这使用公用表表达式(CTE),并增加了一个序列列。 {list-of-table-in-table}就像它说的那样。并非所有列都需要,但我不会在这里解释。
{list-of-key-columns]是用来定义什么是重复的列。
{rule-to-determine-row-to-keep}是一个序列,因此第一行是要保留的行。例如,如果您想保留最早的行,则可以使用日期列来表示序列。
下面是带有实列的查询示例。
WITH cte AS
(
SELECT ID, CourseName, DateAdded,
row_number() over (PARTITION BY CourseName ORDER BY DateAdded) as sequence
FROM Courses
)
DELETE FROM cte
WHERE sequence > 1
本示例根据CoursName值删除重复行,并保留基于DateAdded值的最早值。
0
http://support.microsoft.com/kb/139444
这一部分是关键。 主要点你应该带走。 )
本文讨论如何定位 和从 表中删除重复的主键。但是,您应该仔细检查允许 重复发生的过程,以便 防止重复发生。
通过按逻辑键对数据进行分组来识别您的记录,因为您显然没有定义它们,并且在最后应用HAVING COUNT(*)> 1语句。文章深入讨论了这一点。
0
这是一个简单的方法
Select * Into #TempTable FROM YourTable
Truncate Table YourTable
Insert into YourTable Select Distinct * from #TempTable
Drop Table #TempTable
相关问题
- 1. 从表中删除重复记录
- 2. 删除表中的重复记录
- 3. 删除列表中的重复记录
- 4. Mysql - 删除重复记录
- 5. 删除重复记录
- 6. AngularJS - 删除重复记录
- 7. 删除重复记录?
- 8. 删除重复记录
- 9. XSL删除重复记录
- 10. oracle |删除重复记录
- 11. 如何从Hive表中删除重复的记录?
- 12. 如何从SQL表中删除所有重复的记录?
- 13. 如何从MySQL表中删除重复记录?
- 14. 如何使用C#从Excel表中删除重复的记录
- 15. 如何从表中删除重复的记录?
- 16. 删除从SQL表中重复记录没有主键
- 17. 在SAS中删除重复记录
- 18. 删除SQL Server中的重复记录?
- 19. Python重复数据删除记录 - 重复数据删除
- 20. 合并表(9M记录)并删除重复记录
- 21. 删除除一个重复记录以外的所有记录
- 22. 删除db2中的所有重复记录。 (不只是重复的记录)
- 23. Firebird SQL删除重复记录
- 24. 删除重复的XML记录
- 25. 如何删除重复记录
- 26. MySQL CrossTab并删除重复记录
- 27. 使用MapReduce删除重复的记录
- 28. 与原始记录删除重复
- 29. 删除特定的重复记录
- 30. Oracle:批量删除重复记录
如果只有48个,请加载SSMS并手动删除它们。 – 2010-12-16 23:00:39