Sql 删除重复记录

Sql 删除重复记录,sql,Sql,是否有某种方法可以删除表中存在的重复记录。我只希望通过查询删除一条记录和其余记录。这可以通过查询完成。 请建议使用不同的: 使用不同的: 它基本上取决于表的结构、约束数以及主键中的列数(如果有) 你需要找到一个优化的查询,它将根据你上面的约束来确定唯一的记录,然后最重要的是你需要考虑删除你的查询中的那些重复的时间。 因此,除非发布完整的结构和一些示例重复数据,否则任何人都不能发表评论 希望这个小输入有帮助。它基本上取决于表的结构、约束的数量以及主键中的列数(如果有) 你需要找到一个优化的查询,它

是否有某种方法可以删除表中存在的重复记录。我只希望通过查询删除一条记录和其余记录。这可以通过查询完成。 请建议使用不同的:

使用不同的:


它基本上取决于表的结构、约束数以及主键中的列数(如果有)

你需要找到一个优化的查询,它将根据你上面的约束来确定唯一的记录,然后最重要的是你需要考虑删除你的查询中的那些重复的时间。 因此,除非发布完整的结构和一些示例重复数据,否则任何人都不能发表评论


希望这个小输入有帮助。

它基本上取决于表的结构、约束的数量以及主键中的列数(如果有)

你需要找到一个优化的查询,它将根据你上面的约束来确定唯一的记录,然后最重要的是你需要考虑删除你的查询中的那些重复的时间。 因此,除非发布完整的结构和一些示例重复数据,否则任何人都不能发表评论

希望这一点有帮助。

试试这个-

首先将id列作为标识添加到表中-

alter <tablename> add id INT IDENTITY
然后使用下面的查询删除重复记录-

delete 
FROM <tablename>
WHERE id IN
(
SELECT MAX(id)
FROM <tablename>
GROUP BY <columnnames defining uniqueness>
having count ( * )   > 1
)
请考虑,它只删除现有行的一个副本。如果有三行共享分组条件-这将不起作用,除非您多次执行查询,直到没有行被删除或更改删除条件。

尝试此操作-

首先将id列作为标识添加到表中-

alter <tablename> add id INT IDENTITY
然后使用下面的查询删除重复记录-

delete 
FROM <tablename>
WHERE id IN
(
SELECT MAX(id)
FROM <tablename>
GROUP BY <columnnames defining uniqueness>
having count ( * )   > 1
)

请考虑,它只删除现有行的一个副本。如果有三行共享分组条件-这将不起作用,除非您多次执行查询,直到没有行被删除或更改删除条件。

以下是删除重复记录的示例

Create table #Test (colA int not null, colB int not null, colC int not null, id int not null identity) on [Primary]
GO
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)

INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)

INSERT INTO #Test (colA,colB,colC) VALUES (4,5,6)
GO
Select * from #Test
GO
Delete from #Test where id <
(Select Max(id) from #Test t where #Test.colA = t.colA and
#Test.colB = t.colB and
#Test.colC = t.colC)
GO
Select * from #Test
GO

下面是删除重复记录的示例

Create table #Test (colA int not null, colB int not null, colC int not null, id int not null identity) on [Primary]
GO
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)

INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)

INSERT INTO #Test (colA,colB,colC) VALUES (4,5,6)
GO
Select * from #Test
GO
Delete from #Test where id <
(Select Max(id) from #Test t where #Test.colA = t.colA and
#Test.colB = t.colB and
#Test.colC = t.colC)
GO
Select * from #Test
GO

有,但你应该学会搜索现有答案和接受现有问题的答案。你在使用什么关系数据库?你最后10个问题的回答是否令人满意?如果是这样的话,你能接受这些问题的答案吗?如果你使用的是MySQL,你可能想看看昨天的帖子:有,但你应该学会搜索现有答案和接受现有问题的答案。你在使用什么RDBMS?你最后10个问题的回答是否令人满意?如果是这样的话,你能接受这些问题的答案吗?如果你使用的是MySQL,你可能想看看昨天的这篇文章: