删除已在表

时间:2015-12-14 06:55:43

标签: sql pdo sql-delete

我今天遇到了一些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行就足够了。

2 个答案:

答案 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,并提供示例以及有关如何使用查询的详细信息。