/*******
假设你要处理的表名是: pludetail
可以用以下过程来实现,速度不在下面过程的考虑之中
*********/
create procedure distinct_deal
as
begin
begin transaction
select distinct * into #tempdel from pludetail --提取无重复的记录到临时表中
truncate table pludetail --清掉原表
insert pludetail
select * from #tempdel --把临时表中无重复的数据插回原表
drop table #tempdel
if @@error<>0
begin
raiserror('数据处理失败!',16,-1)
goto error_deal
end
commit transaction
return
error_deal:
rollback transaction
return
end
/**
要实现以上过程在指定时间内执行
可以用数据库的管理中的作业作实现,很简单,这里不详述了
希望这个方法对你有用
**/
开始执行或者开始执行的时间,以前做过,但是现在忘记了,集中搂住的重复问题
解决搂住的问题有三种方法,第一个是使用游标,因为数据量大,所以排除,第二种是判断删除,也因为数据量大,排除,现在使用批量处理的方法,希望对搂住有些帮助,(简单的写一下,楼主自己完善)0
create proc ss
as
begin
--插入临时表
select zi(省略其他字段.....)
into #aa
from biao
group by
zi(.....)
--删除标的数据
delete from biao
--重新插入
insert into
biao
from
#aa
--事务处理(这一步很必要,否则删除后没有会滚,后果不堪设想)
if @error<>0 goto ER
commint transaction
end
ER:
print 'error'
rollback transaction
用一个临时表记录一条你需要删除其重复项的记录, 然后用DELETE删除表里面的记录后再INSERT回去。
具体CREATE PROCEDURE可以看MYSQL\DOCS\MANUAL.CHM
如果是我,我就会偷懒:
用access连接sql
用access的自动生成的查找重复项查询
然后删除
我觉得没有必要,只需要在提交的时候插入一个查找命令看是否有相同的数据存在,然后禁止插入数据就可以了阿!何必这么麻烦呢???