删除已出现在 table 中的行

Delete rows that already appear in table

我今天遇到了一些 SQL 问题,并多次复制了 table 的记录,试图恢复到备份。 Table 目前如下所示:

id user col1 col2 col3 ...
1   3    0     9    3  ...
2   4    1     2    1  ...
3   2    1     9    2  ...
...
1   3    0     9    3  ...
2   4    1     2    1  ...
3   2    1     9    2  ...
...
...

每条记录出现五次。我每人只想要一个。我试过手动删除一堆,但有 3,000 多条,而应该只有 600 条。自从我删除了一堆以来,并非所有记录都出现了五次(大约四次),但我宁愿一次性完成。要注意的是,如果 id 在两行之间匹配,则所有后续列也将匹配,因此只需删除重复的 id 行就足够了。

您只需将重复项分组即可轻松删除它们。

喜欢:

Select 
id,user,col1,col2,.... 
from the Table_name
group by 
id,user,col1,col2,.... 

这将删除所有列级别的重复项,从而解决您的问题

删除重复记录的最佳方法是使用 CTE 和 ROW_NUMBER() 通过按列分区列表。下面是删除重复行的语法。

WITH CTE AS(
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1

查看 How to Delete Duplicate Rows in sql 示例以及有关如何使用查询的更多详细信息。