sql - 从没有主键的 SQL 表中删除重复记录

标签 sql tsql sql-server-2005 duplicates

我有下表,其中包含以下记录

create table employee
(
 EmpId number,
 EmpName varchar2(10),
 EmpSSN varchar2(11)
);

insert into employee values(1, 'Jack', '555-55-5555');
insert into employee values (2, 'Joe', '555-56-5555');
insert into employee values (3, 'Fred', '555-57-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6, 'Lisa', '555-70-5555');
insert into employee values (1, 'Jack', '555-55-5555');
insert into employee values (4, 'Mike', '555-58-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6 ,'Lisa', '555-70-5555');
insert into employee values (5, 'Cathy', '555-59-5555');
insert into employee values (6, 'Lisa', '555-70-5555');

我的表中没有任何主键。但是我的表中已经有上述记录。 我想删除 EmpId 和 EmpSSN 字段中具有相同值的重复记录。

例如:Emp id 5

如何构建查询来删除这些重复记录?

最佳答案

这很简单。我在 SQL Server 2008 中尝试过

DELETE SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
 FROM Employee) SUB
WHERE SUB.cnt > 1

关于sql - 从没有主键的 SQL 表中删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/985384/

相关文章:

python - pyODBC:在 Windows 中指定驱动程序的位置

sql - 如何使用 sum(y) 和不同的表优化 select x 除以子查询的 SQL?

sql - 如何使用另一个表中的随机行更新表的每一行

sql-server - SQL Server 2005 - 触发循环?

sql - 如何对街道地址列进行索引

python - 在 pyodbc 中将表名作为参数传递

mysql - 如果重复插入则更新? w 在 INSERT 上自动增加 P​​K?

mysql - 插入记录和忽略的 SQL 语法存在索引而不是主键

SQL 连接及其在查询中列出的顺序

sql - 使用三重自联接执行缓慢的 SQL 查询