如何删除表中的重复记录?
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行)
/*-----------------------------
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行)
相关文章推荐
- 如何使用SQL删除某个字段重复的记录,保留其中一条
- 四种方法教你如何用SQL语句删除重复记录
- 如何删除表中的重复记录?
- 在Oracle中如何利用Rowid查找和删除表中的重复记录
- 如何按字段删除重复记录
- 如何查出同一张表中字段值重复的记录,或者删除重复的记录
- mysql如何删除重复记录
- 如何删除重复记录,并且剩下一条?
- 在Oracle中如何利用Rowid查找和删除表中的重复记录
- 在Oracle中如何利用Rowid查找和删除表中的重复记录(转)
- 如何查找、删除表中重复的记录
- 数据库表中有重复记录,如何删除这些重复记录保留ID最大的一个信息
- 如何删除数据库中重复的记录
- 如何用SQL删除重复记录
- 如何删除表中的重复记录只保留其中一条?
- 如何删除数据库中重复的记录
- 如何在SQL Server中快速删除重复记录
- 如何删除一张表的重复记录
- Oracle如何查找、删除表中重复的记录
- 如何删除表中的重复记录?等等常用SQL语句的积累