删除表中多余的重复记录(多个字段),只留有rowid最小的记录

假如表Users,其中ID为自增长.

ID,Name,Sex

1 张三,男

2 张三,男

3 李四,女

4 李四,女

5 王五,男

 

--查找出最小行号ID的重复记录

select Name,Sex,Count(1),Mix(ID)

into #TempTable

from Users

group by Name,Sex

having Count(1)>1

 

--删除重复记录,只保留最小行号的

Delete from Users

from Users as A

inner join #TempTable as B  ON A.Name=B.Name  And A.Sex=B.Sex

where A. ID<>B.ID

 

 

--注意上面表中ID为自增长,如果User表中没有ID自增长,可以虚拟一个ID自增长列。

select IDENTITY(INT) as ID,Name,Sex from Users 

posted @ 2013-12-19 22:16  跟着阿笨一起玩.NET  阅读(738)  评论(1编辑  收藏  举报