我今天遇到了一些SQL问题,并多次重复表格的记录,试图恢复备份。表格目前如下:
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 ...
...
...
每条记录出现五次。我只想要一个。我尝试手动删除一堆,但是当应该只有600时,会有3000+。自从我删除了一堆以来,并非所有记录都出现了五次(大约四次),但我宁愿做它一举一动。要注意的是,如果id
在两行之间匹配,则所有后续列也将匹配,因此只删除重复id
行就足够了。
答案 0 :(得分:1)
只需将重复项分组即可轻松删除重复项。
像:
Select
id,user,col1,col2,....
from the Table_name
group by
id,user,col1,col2,....
这将删除所有列级别的重复项,从而解决您的问题
答案 1 :(得分:0)
删除重复记录的最佳方法是使用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,并提供示例以及有关如何使用查询的详细信息。