如何查找并删除表中的重复记录

操作系统: 数 据 库: SqlSvr 2000
软件版本: 软件模块:
问题描述:
   有的时候可能后台表存在重复记录或者是自己导入的数据存在重复记录行,需要将重复记录行找出来并删除重复记录
产生原因: 
解决方法:
   1、首先要将重复记录查询出来,这里以LSWLZD为例,将LSWLZD表中物料名称和规格型号组合后存在重复的数据查询出来:
SELECT COUNT(LSWLZD_WLMC||LSWLZD_GGXH) FROM LSWLZD GROUP BY LSWLZD_WLMC,LSWLZD_GGXH
HAVING COUNT(LSWLZD_WLMC||LSWLZD_GGXH)>1
2、将重复记录删除,注意,下面这个居于可能需要重复执行几次才可能将重复记录完全删除,执行次数取决于重复的次数。
DELETE  FROM LSWLZD WHERE LSWLZD_WLBH IN (SELECT MAX(LSWLZD_WLBH) FROM LSWLZD GROUP BY LSWLZD_WLMC,LSWLZD_GGXH
HAVING COUNT(LSWLZD_WLMC||LSWLZD_GGXH)>1)

注:重复记录有很多种情况,此方案仅仅是提供解决问题的一种思路。如果表中有几百万条数据,上述方法用group by分组就很慢了,此时只能用创建具有忽略重复值索引的中间表的方法来过滤数据。

原创文章,转载请注明: 转载自浪潮888博客

本文链接地址: 如何查找并删除表中的重复记录

文章的脚注信息由WordPress的wp-posturl插件自动生成



This entry was posted in 浪潮文档. Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>