删除已出现在 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 示例以及有关如何使用查询的更多详细信息。
我今天遇到了一些 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 示例以及有关如何使用查询的更多详细信息。