删除SQL中重复行

 

问题:一个表有自增的ID列,表中有一些记录内容重复,也就是说这些记录除了ID不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除。

 

 

      版本一:由于记录有自增列,所以自增列可以做为记录的唯一标识,由此可见,重复的记录的自增ID是一个递增关系,这里我们可以只保留ID最小的那条记录,其它的全部删除。利用一个嵌套语句就非常容易写出下面的SQL。其中的sname,saddress是记录除了ID外的所有列。

 

DELETE  FROM a
WHERE   id NOT IN ( SELECT  MIN(id)        FROM    a     GROUP BY sname,         saddress )

posted @ 2010-02-04 17:16  tangself  阅读(212)  评论(0编辑  收藏  举报