请问下该如何删除同一张表中有多行相同的数据,但是要保留一行的数据,如下表:
ID    name    cdefine1    cdefine2    cdefine3
1      aa       101         09-08       15:35
2      aa       101         09-09       15:37
3      bb       101         09-09       15:36
4      cc       204         09-12       14:35
5      cc       204         09-13       12:35
6      dd       255         09-05       15:55
7      ee       255         09-06       18:15
8      ee       211         09-14       11:24
现在我要删除表中字段name和cdefine1相同的数据,就是说只要字段name和cdefine1是一样的就删除,但是要保留一条,最终结果如下:ID    name    cdefine1    cdefine2    cdefine3
1      aa       101         09-08       15:35
2      bb       101         09-09       15:36
3      cc       204         09-12       14:35
4      dd       255         09-05       15:55
5      ee       255         09-06       18:15
8      ee       211         09-14       11:24
请问该如何实现?先谢谢啦

解决方案 »

  1.   


    delete t
    from tb t
    where exists (select 1 from tb where name=t.name and cdefine1=t.cdefine1 and id>t.id)
      

  2.   

    select * from tb t
    where not exists(select 1 from tb where name=t.name and cdefine1=t.cdefine1 and cdefine3<t.cdefine3)
      

  3.   

    delete
     t
    from 
     tb t
    where 
     exists (select 1 from tb where name=t.name and cdefine1=t.cdefine1 and id>t.id)
      

  4.   

    delete a from tb a
    where exists (select 1 from tb where name=a.name and cdefine1=a.cdefine1 and id>a.id)
      

  5.   

    delete a from tb a
    where exists (select 1 from tb where name=a.name and cdefine1=a.cdefine1 and id>a.id