用户在提交后,由于程序失误,库里存了二次同样的记录
而且好多用户都这样
现在只知道时间是发生在2010-09的事情。请教各位,如何删除重复的记录?

解决方案 »

  1.   

    贴记录及要求结果出来看看
    有无唯一标识的字段
    保留(删除)哪一条记录,比如ID最大 OR 最小
      

  2.   

    根据唯一键(不存在的,你自己根据你判定不唯一的条件组合字符串)group by having count(*)>1.
    如果数据很大,慎用。
      

  3.   

    不知道楼主是不是表数据就一个id不同其它的都不同
    1.你可以建一个游标遍历你的表(限制条件为你知道的时间内,这样数据量可能会小些)
    2.然后选出一条记录delete from table1 where id > minid and column1 = column1 and column2=column2[ and columnN = columnN...]
    如果数据量不大应该还可以大体这么个思路
    或者是
    insert into tmptable(column1,column2....columnN) select column1,column2...columnN
    from table 1
    group by column1,column2,...columnN相当于把重复数据唯一化去重入到tmptable然后把原表数据删除,把tmptable数据再插回来
      

  4.   

    每条记录只有ID是主键。
    正常的应该如下:
    ID   姓名    交费   日期
    1    张三    10元   2010-05-01
    2    李四    5元    2010-05-05
    3    王武    20元   2010-05-02
    4    张三    7元    2010-05-07
    ............现在是成了这样的:ID   姓名    交费   日期
    1    张三    10元   2010-05-01
    2    张三    10元   2010-05-01
    3    李四    5元    2010-05-05
    4    李四    5元    2010-05-05
    5    王武    20元   2010-05-02
    6    王武    20元   2010-05-02
    7    张三    7元    2010-05-07
    8    张三    7元    2010-05-07
      

  5.   

    delete from table1 a
    where exists (select 1 from table1 where 姓名=a.姓名 and 交费=a.交费 and 日期=a.日期 and ID<a.ID)
      

  6.   

    delete a from tt a inner join
    (select 姓名,min(id) as mi from tt group by 姓名) b
    on a.姓名=b.姓名 and a.id=b.mi最好用一个编号,因姓名有重复