select distinct ID,Filed1,filed2
into #test
from Adelete from Ainsert into A select * from #test

解决方案 »

  1.   


    在大的数据库应用中,经常因为各种原因遇到重复的记录,造成数据的冗余和维护上的不便。1.用rowid方法2.用group by方法3.用distinct方法1。用rowid方法据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
    查数据:
        select * from table1 a where rowid !=(select  max(rowid)  
        from table1 b where a.name1=b.name1 and a.name2=b.name2......)
    删数据:
       delete  from table1 a where rowid !=(select  max(rowid)  
        from table1 b where a.name1=b.name1 and a.name2=b.name2......)2.group by方法查数据:
      select count(num), max(name) from student --列出重复的记录数,并列出他的name属性 
      group by num 
      having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次 
    删数据:
      delete from student 
      group by num 
      having count(num) >1
      这样的话就把所有重复的都删除了。3.用distinct方法 -对于小的表比较有用create table table_new as  select distinct *  from table1 minux 
    truncate table table1;
    insert into table1 select * from table_new;
      

  2.   

    select * ,identity(int,1,1) as sid into #t from tb
    truncate table tb
    delete a from #t a,#t b where a.id=b.id and a.sid<b.sid
    alter table #t drop column sid
    insert into tb
    select * from #t
    drop #t
      

  3.   

    select distinct * into #t from Atruncate table Ainsert into A select * from #t order by IDdrop table #T
      

  4.   

    lizhaogui 你这样只是查出重复记录了,删除的话会全部删掉,不能保留一条啊后面几位都用了临时表,有没有一句话可以搞定的