阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1762|回复: 5

[转帖] 删除数据库中重复数据

[复制链接]
  • TA的每日心情
    开心
    2012-3-7 10:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2012-1-3 11:50:58 | 显示全部楼层 |阅读模式
    实例介绍删除数据库中重复数据的两个方法:

    第一个方法:
    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

    第二个方法:
    一般情况下有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

    1、对于第一种重复,比较容易解决,使用

    select distinct * from tableName

    就可以得到无重复记录的结果集。

    如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除。

    select distinct * into #Tmp from tableName
    drop table tableName
    select * into tableName from #Tmp
    drop table #Tmp

    发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

    2.这类重复问题一般要求保留重复记录中的第1条记录,假设有重复的字段为Name,Address,

    要求得到这两个字段唯一的结果集:

    select identity(int,1,1) as autoID,
    * into #Tmp from tableName
    select min(autoID) as autoID
    into #Tmp2 from #Tmp group by Name,
    autoID select * from #Tmp where autoID
    in(select autoID from #tmp2)

    最后一个select得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2023-8-21 17:26
  • 签到天数: 900 天

    [LV.10]以坛为家III

    发表于 2014-11-13 09:54:54 | 显示全部楼层
    学习一下!!!!!!!!!!!!!!!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2024-4-20 16:34
  • 签到天数: 137 天

    [LV.7]常住居民III

    发表于 2014-12-13 12:37:51 | 显示全部楼层
    学习一下谢谢了。。。。。。。。。。。。。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    2023-9-2 07:02
  • 签到天数: 390 天

    [LV.9]以坛为家II

    发表于 2015-1-16 14:09:44 | 显示全部楼层
    教**详细,我们这没有什么基础的看起来也不吃力,谢谢分享
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2023-9-9 21:24
  • 签到天数: 189 天

    [LV.7]常住居民III

    发表于 2015-1-28 18:08:14 | 显示全部楼层
    学习一下谢谢了
    - 本文出自阳光网驿--企业信息化专家,原文地址:http://bbs.sunwy.org/thread-129580-1-1.html
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    昨天 10:35
  • 签到天数: 3494 天

    [LV.Master]伴坛终老

    发表于 2015-4-28 20:33:48 | 显示全部楼层
    完全看不懂呀。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表