假设有一个employee表,其中包含列名称,id和salary,它们在所有三行中都有2行或两行以上相同的值...然后如何编写查询来删除重复的行..
答案 0 :(得分:8)
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'