日期:2014-05-17  浏览次数:20322 次

删除数据库中重复数据的问题
有这样一个数据表TEST,共三个字段:ID(自增长)、员工编号、打卡时间。
现需要做一个存储过程,查找该表中重复的(员工编号+打卡时间)记录,如有则删除。(员工编号和对应的打卡时间都重复才算重复)

请教应该怎样写。谢谢!


------最佳解决方案--------------------
create proc P_del
as
begin
delete from TEST where not ID in (select min(ID) from TEST group by 员工编号,打卡时间)
end

------其他解决方案--------------------
试试:
select * into #t from test a
where exists (select 1 from 
(select 员工编号,打卡时间
from test 
group by 员工编号,打卡时间
having count(1)>1) b where a.员工编号=b.员工编号 and a.打卡时间=b.打卡时间)
go
delete from test where id in (select id from #t)
go
insert into test
select min(id),员工编号,打卡时间
from #t
group by 员工编号,打卡时间

------其他解决方案--------------------
delete from TEST where exists(select 1 from TEST t where t.员工编号=TEST.员工编号 and t.打卡时间 =TEST.打卡时间 and t.ID<TEST.ID)
 

------其他解决方案--------------------
没有积份啊,,怎么办
------其他解决方案--------------------
我用的是临时表方式。。。