SQL查询从同一个表中删除重复的行?

时间:2010-12-22 15:17:23

标签: sql

假设有一个employee表,其中包含列名称,id和salary,它们在所有三行中都有2行或两行以上相同的值...然后如何编写查询来删除重复的行..

5 个答案:

答案 0 :(得分:8)

如果您使用Sql Server

Here是一个很好的方法

with duplicates as
(select * ,ROW_NUMBER() over(

      partition by id,name, salary
      order by id,name, salary) rownum
from Person)
delete from duplicates where rownum > 1

答案 1 :(得分:3)

假设ID是主键:

delete P
from Person P right outer join
(
   select name, min(id) as id
   from Person
   group by name
) unique_people
on P.id = unique_people.id
where P.id is NULL

答案 2 :(得分:0)

你可以为你的领域设置唯一的密钥...... 否则你可以删除所有重复的行 通过

table_name 中删除,其中id = @id和name = @ name

答案 3 :(得分:0)

将原始表中的不同行插入新临时表。 从原始重复表中删除数据,然后将临时表中的不同行插入原始表。

select distinct * into temp From Emp;
delete from Emp;
insert into Emp(name,ID,salary) as select * from temp; 
drop table temp;

答案 4 :(得分:-1)

DELETE TOP(1) FROM tablename WHERE columemane='name'

假设我在表学生中有2个重复的行:

名称|号码|姓氏

Manoj | 1125256 |夏尔马

Manoj | 1125256 |夏尔马

我想使用以下查询删除一个

DELETE TOP(1) FROM student WHERE name='Manoj'