SqlServer 2005中使用row_number()在一个查询中删除重复记录

2016-02-19 10:26 20 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享SqlServer 2005中使用row_number()在一个查询中删除重复记录吧。

【 tulaoshi.com - 编程语言 】

下面我们来看下,如何利用它来删除一个表中重复记录:
代码如下:

If Exists(Select * From tempdb.Information_Schema.Tables Where Table_Name Like '#Temp%')
Drop Table #temp
Create Table #temp ([Id] int, [Name] varchar(50), [Age] int, [Sex] bit default 1)
Go
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(1,'James',25,default)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(1,'James',25,default)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(1,'James',25,default)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(2,'Lisa',24,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(2,'Lisa',24,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(2,'Lisa',24,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(3,'Mirsa',23,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(3,'Mirsa',23,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(3,'Mirsa',23,0)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(4,'John',26,default)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(5,'Abraham',28,default)
Insert Into #temp ([Id] , [Name] , [Age] , [Sex] ) Values(6,'Lincoln',30,default)
Delete T From
(Select Row_Number() Over(Partition By [ID],[Name],[Age],[Sex] order By [ID]) As RowNumber,* From #Temp)T
Where T.RowNumber 1
Select * From #temp

注意倒数第二句脚本,我们在一个查询实现这个功能.
你可以自己执行T-SQL script 看效果.希望对您开发有帮助!

来源:http://www.tulaoshi.com/n/20160219/1594646.html

延伸阅读
标签: MySQL mysql数据库
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解...
标签: SQLServer
DECLARE @pagenum AS INT, @pagesize AS INT SET @pagenum = 2 SET @pagesize = 3 SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY newsid DESC) AS rownum,         newsid, topic, ntime, hits       FROM news) AS D WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @...
分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系统中取出每个学科前3名的学生。这种查询在SQL Server 2005之前,写起来很繁琐,需要用到临时表关联查询才能取到。SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单。下面是一个简单示例: 代码如下: --1.创建测试表 create tabl...
标签: 电脑入门
在Excel中录入数据后,我们一般用高级筛选来处理删除重复的记录,Excel2007保留了这个功能,同时又增加了一个删除重复项按钮,使操作更加简单、灵活。 一、传统方法:使用高级筛选 步骤如下: 1.单击数据区,选中其中的任一个单元格。如果只是针对其中部分字段和记录进行筛选,可先选中这部分区域。注意:只对连续选中的矩形区域有效。 2....
有个需求,一直没有解决,在google上找了半天,给出的方案没有一个能用了,最后鬼使神差搞定了。  是这样的,假设一个表: id   f_id    value    1     2         a    2  ...

经验教程

825

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部