首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否删除SQL Server中的重复记录?

是否删除SQL Server中的重复记录?
EN

Stack Overflow用户
提问于 2010-07-23 18:49:35
回答 7查看 108.3K关注 0票数 102

考虑名为EmployeeNameEmployee的列。目标是根据EmployeeName字段删除重复的记录。

EmployeeName
------------
Anand
Anand
Anil
Dipak
Anil
Dipak
Dipak
Anil

使用一个查询,我想删除重复的记录。

如何在SQL Server中使用TSQL实现这一点?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-07-23 23:22:01

您可以使用窗口函数来实现这一点。它将按empId对副本进行排序,并删除除第一个副本之外的所有副本。

delete x from (
  select *, rn=row_number() over (partition by EmployeeName order by empId)
  from Employee 
) x
where rn > 1;

将其作为select运行,以查看要删除的内容:

select *
from (
  select *, rn=row_number() over (partition by EmployeeName order by empId)
  from Employee 
) x
where rn > 1;
票数 235
EN

Stack Overflow用户

发布于 2010-07-23 19:02:17

您可以尝试执行以下操作:

delete T1
from MyTable T1, MyTable T2
where T1.dupField = T2.dupField
and T1.uniqueField > T2.uniqueField  

(假设您有一个基于整数的唯一字段)

不过,就我个人而言,您最好尝试在数据库发生之前纠正重复条目被添加到数据库的事实,而不是作为修复后操作。

票数 8
EN

Stack Overflow用户

发布于 2010-07-25 19:30:41

WITH CTE AS
(
   SELECT EmployeeName, 
          ROW_NUMBER() OVER(PARTITION BY EmployeeName ORDER BY EmployeeName) AS R
   FROM employee_table
)
DELETE CTE WHERE R > 1;

通用表表达式的魔力。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3317433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档