已经通过以下的语句把表中有重复(部分字段)的数据找出来了。现在,我需要删除重复的部分。也就是说,这个表中的字段有多行重复,我需要删除重复的行,保留其中的一行。select   a.key,a.field   
from     table   as   a   
join     
     (select   field  
      from  table   
      group   by   field  
      having   count(*)>=2)      
      as   b   
      on   (a.field=b.field)   

解决方案 »

  1.   

    select distinct * into tmp from tb
    drop table tb
    sp_rename tmp tb
      

  2.   


    --参考:一张表里面以两个字段为唯一字段,当几条记录的这两个字段完全相同时,需要删除重复项,如下表   
      a   b   c   d   
      1   2   3   4   
      1   5   3   5   
      1   2   7   9   
      以a、b为唯一字段,第一条和第三条的a、b完全相同,所以,需要删除第一条记录1   2   3   4   或者第三条记录1   2   7   9   
      即如下结果:   
      a   b   c   d   
      1   2   3   4   
      1   5   3   5   
      或   
      a   b   c   d   
      1   5   3   5   
      1   2   7   9   
        
      请问各位大侠这种sql语句怎么写   
        
        
      CREATE   TABLE   Tb1(id   int,   [a]   varchar(255),   [b]   varchar(255),   [c]   varchar(255),   [d]   varchar(255))   
      INSERT   Tb1(id,   [a],   [b],   [c],   [d])   
                            SELECT   1,   '1','2','3','4'   
      UNION   ALL     SELECT   2,   '1','5','3','5'   
      UNION   ALL     SELECT   3,   '1','2','7','9'   
      UNION   ALL     SELECT   4,   '1','4','7','6'   
        
      delete   Tb1   where   [id]   not   in   (select   max([id])   from   Tb1   group   by   a,b   )   
      select   *   from   tb1   
          
      drop   table   tb1   
        
      如果要同时删除第一和第三行   
      即如下结果:   
      a   b   c   d   
      1   5   3   5   
        
      语句如下:   
        
      delete   m   from   tb   t   
      inner   join   
      (   
      select   a   ,b   
      from   tb   
      group   by   a   ,   b   
      having   count(*)>1   
      )n   
      on   m.a   =   n.a   and   m.b   =   n.b     
      或   
      delete   *   from   tb   as   m,   
      (   
      select   a   ,b   
      from   tb   
      group   by   a   ,   b   
      having   count(*)>1   
      )n   
      where   m.a   =   n.a   and   m.b   =   n.b
    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?谢谢!   
      1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断   
      select   *   from   people   
      where   peopleId   in   (select     peopleId     from     people     group     by     peopleId     having     count(peopleId)   >   1)   
        
      2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录   
      delete   from   people     
      where   peopleId     in   (select     peopleId     from   people     group     by     peopleId       having     count(peopleId)   >   1)   
      and   rowid   not   in   (select   min(rowid)   from     people     group   by   peopleId     having   count(peopleId   )>1)   
        
      3、查找表中多余的重复记录(多个字段)     
      select   *   from   vitae   a   
      where   (a.peopleId,a.seq)   in     (select   peopleId,seq   from   vitae   group   by   peopleId,seq     having   count(*)   >   1)   
        
      4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录   
      delete   from   vitae   a   
      where   (a.peopleId,a.seq)   in     (select   peopleId,seq   from   vitae   group   by   peopleId,seq   having   count(*)   >   1)   
      and   rowid   not   in   (select   min(rowid)   from   vitae   group   by   peopleId,seq   having   count(*)>1)   
        
      5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录   
      select   *   from   vitae   a   
      where   (a.peopleId,a.seq)   in     (select   peopleId,seq   from   vitae   group   by   peopleId,seq   having   count(*)   >   1)   
      and   rowid   not   in   (select   min(rowid)   from   vitae   group   by   peopleId,seq   having   count(*)>1)   
      

  3.   

    留哪一条无所谓,主键就是a.key
      

  4.   

    2楼的朋友,主要是我这个表太大,这只是其中的某一个字段值重复,其他的字段都不重复的。
    distinct *
    谢谢啊