噩梦-删除重复记录

周末,在噩梦中度过。

很多人都经历过这样的噩梦吧?数据库中多条记录中某个字段的值重复了——理论上讲,如果数据库设计合理,或者程序足够完美,是不会出现的——现在要删除重复的记录并只保留其中ID最小的一条。

distinct?  它是排除完全一致的记录的,可我们遇到的是仅一个字段重复;

建临时表,查询旧表的记录是否在临时表中存在,不存在则将旧表的记录复制到临时表。嗯~~~似乎是个好办法,但是,,,,问题在于数据库中这条表的记录有......10万条,这样下去,会等死人的;

group by ... having count(...)...?  我晕倒,重复的记录的确是查找出来了,很好,好象有希望了,但是,我不能全部delete,还要保留一条啊~   select ... from ... where ... not in( select ...from ... group by ... having....).....?????  不行啊老大,用in也会死人的;

...

整个周末啊,没解决的问题就会整天想着,吃饭也想,走路也想,当然,没那么厉害可以边走路边想SQL语句,只是在想着还有问题没搞定,于是就干啥都没心情了,郁闷了。

最终解决:

在Access中,复制表bb,仅复制表结构,不复制数据,得到新表gg

在SQL企业管理器中,导入数据,源选择Access中的旧表bb

导入数据,源选择Access中的新表gg

改造新表gg的结构,将重复字段的索引加上,定义为“唯一的索引”,并“忽略重复项”

insert into gg select * from bb

执行

报错“重复的记录被忽略”

哈哈哈哈哈,,,,,我得意的笑.......  再将SQL的表导出到Access。

噩梦结束。



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 1 | 引用: 5 | 查看次数: 5567
回复回复ACCESS人[2007-12-06 10:52 AM | del]
没必要这么麻烦的,思路是对的,但全部过程可以在ACCESS中完成。
发表评论
你没有权限发表评论!