首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于数据库去重的方法

2013-06-19 
关于数据库去重的方法求助现有一个表 table有两个字段 a,b没有自增主键现在想把 a,b 重复的数据删除,但是

关于数据库去重的方法求助
现有一个表 table
有两个字段 a,b

没有自增主键

现在想把 a,b 重复的数据删除,但是保留一条。

数据在千万级别,求一个高效的方法去重。
数据库
[解决办法]

-------------如果删除的数据量比较大时
With dup as 
(
Select *,ROW_NUMBER() Over(Partition by a,b order by a,b)as rn
From dbo.tb
)
Select a,b
Into dbo.duptmp
From dup
Where rn = 1;
---
drop table tb;
exec sp_rename 'dbo.duptmp','dbo.tb'

当删除的数据比较少时。
[解决办法]
引用:
Quote: 引用:

1、select distinct a,b into #t from tb
2、truncate table tb
3、insert into tb select * from #t


能不能解说下原理? 新手不大懂

第一步先把非重复的插入一个临时表(这个临时表就是你希望保留的数据),然后第二步把原表清空了,第三步把数据插回去原表

热点排行