浏览 2893 次
锁定老帖子 主题:MSSQL如何删除表中的重复记录?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-26
引用 /*----------------------------- select * from tt -----------------------------*/ id pid ----------- ----------- 1 1 1 1 2 2 3 3 3 3 3 3 (所影响的行数为 6 行) 首先,如何查询table中有重复记录 引用 select *,count(1) as rownum from tt group by id, pid having count(1) > 1 id pid rownum ----------- ----------- ----------- 1 1 2 3 3 3 (所影响的行数为 2 行) 方法一:使用distinct和临时表 引用 if object_id('tempdb..#tmp') is not null drop table #tmp select distinct * into #tmp from tt truncate table tt insert into tt select * from #tmp 方法二:添加标识列 引用 alter table tt add NewID int identity(1,1) go delete from tt where exists(select 1 from tt a where a.newid>tt.newid and tt.id=a.id and tt.pid=a.pid) go alter table tt drop column NewID go /*注,oracle中由于有伪列rowid则更简单,可以直接用rowid*/ /* delete from tt where exists(select 1 from tt a where a.rowid>tt.rowid and tt.col1=a.col1 and tt.col2=a.col2) */ --测试结果 引用 /*----------------------------- select * from tt -----------------------------*/ id pid ----------- ----------- 1 1 2 2 3 3 (所影响的行数为 3 行) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |