删除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
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/
————————————————————————————————————————
一个人的时候,总是在想
我的生活到底在期待什么……

浙公网安备 33010602011771号