日期:2014-05-18  浏览次数:20642 次

如何删除同一张表中多行相同的数据但要保留一条?
请问下该如何删除同一张表中有多行相同的数据,但是要保留一行的数据,如下表:


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


请问该如何实现?先谢谢啦

------解决方案--------------------
SQL code

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

------解决方案--------------------
SQL code
delete
 t
from 
 tb t
where 
 exists (select 1 from tb where name=t.name and cdefine1=t.cdefine1 and id>t.id)