SQL重复记录处理

来源:互联网 发布:超级玛丽mac版下载 编辑:程序博客网 时间:2024/06/10 07:43


1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId from   people group by   peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select   peopleId from people group by   peopleId   having count(peopleId) > 1)
and rowid not in (select min(rowid) from   people group by peopleId having count(peopleId)>1)

3、查找表中多余的重复记录(多个字段) 


select * from  ec_dnfhb  where xh in (select min(xh) from ec_dnfhb group by ckhbm,cnpbm,cdayf having count(ckhbm)>1)

4、删除表中多余的重复记录(多个字段)
select * from  ec_dnfhb  where xh in (select min(xh) from ec_dnfhb group by ckhbm,cnpbm,cdayf having count(ckhbm)>1)


5、存贮过程解决


declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >1

open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0