删除SQL中重复数据的方法

之前的做法是声明一个完全一样的临时表,用SELECT distinct 把数据插入到临时表中,删除该表数据再重新插入回来。这么做当然可以达到目的,但是如果数据量比较大的时候就不行了。

效率啊~!!

今天看到别人写了一个方法不错,还适合大量数据,不过用到2005中新函数ROW_NUMBER() 和WITH AS ,废话不说,上代码:

 

  declare @tb table(id int, name varchar(10))

 insert into @tb values(1,'zhw');
 
insert into @tb values(1,'zhw');
 
insert into @tb values(1,'zhw');
 
insert into @tb values(3,'zhw');
 
insert into @tb values(4,'zhw');
 
 
WITH TEST AS
 (
    
SELECT ROW_NUMBER() 
    
OVER(PARTITION BY id,name ORDER BY ID ) 
    
AS NUM,* FROM @tb
 )
 
DELETE FROM TEST
 
WHERE NUM != 1
 
select * from @tb

 

下面给个关于WITH AS 使用方法链接

http://wudataoge.blog.163.com/blog/static/80073886200961652022389/ 

 

posted @ 2011-04-21 17:23  卒子  阅读(279)  评论(0)    收藏  举报