您的位置:首页 > 其它

如何删除表中的重复记录?

2008-04-26 18:38 246 查看
--测试数据
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
1 1
2 2
3 3
3 3
3 3

(所影响的行数为6行)

首先,如何查询table中有重复记录
select*,count(1)asrownum
fromtt
groupbyid,pid
havingcount(1)>1
id pid rownum
---------------------------------
1 1 2
3 3 3

(所影响的行数为2行)

方法一:使用distinct和临时表
ifobject_id('tempdb..#tmp')isnotnull
droptable#tmp
selectdistinct*into#tmpfromtt
truncatetablett
insertintottselect*from#tmp

方法二:添加标识列
altertablettaddNewIDintidentity(1,1)
go
deletefromtt whereexists(select1fromttawhere a.newid>tt.newidandtt.id=a.idandtt.pid=a.pid)
go
altertablettdropcolumnNewID
go

--测试结果
/*-----------------------------
select*fromtt
-----------------------------*/
id pid
----------------------
1 1
2 2
3 3

(所影响的行数为3行)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: