SQLServer中的row_number函数怎么使用

发布时间:2023-03-02 13:51:25 作者:iii
来源:亿速云 阅读:144

本文小编为大家详细介绍“SQLServer中的row_number函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQLServer中的row_number函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、SQL Server Row_number函数简介

ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数。 行号以每个分区中第一行的行号开头。

语法实例:

select *,row_number() over(partition by column1 order by column2) as n
from tablename

在上面语法中:

二、Row_number函数的具体用法

1.使用row_number()函数对结果集进行编号

示例:

对test_user表的查询结果标记行号,并新增 “编号”列返回

-- 使用 ROW_NUMBER()函数对结果进行编号
select ROW_NUMBER() over(order by id) as 编号,* 
from test_user;

运行结果:

SQLServer中的row_number函数怎么使用

可以看到,查询结果新增了一列,专门用来标记行号。

有了编号,我们就可以方便地进行分页查询了。

2.对结果集按照指定列进行分组,并在组内按照指定列排序

示例:

把test_user表的name按照小组进行分组显示,分组后在组内进行从低到高id排序

-- 使用partition by对结果集进行分组
select *,row_number() over(partition by name order by id) as n 
from  test_user;

运行结果:

SQLServer中的row_number函数怎么使用

3.对结果集按照指定列去重

示例:

对 test_user表按name进行分组显示,结果集中只显示每组中一条 id最小的数据

select a.* from (
	select *,row_number() over(partition by name order by id) as row_id from test_user
	) as a 
-- 只查询组内编号为1的数据
where a.row_id<2;

运行结果:

SQLServer中的row_number函数怎么使用

查询结果先是经过name分组,然后组内进行id升序排序,组内编号为1的第1条数据,自然就是id最小的数据。

注意:

当我们按成绩分数查询名次等需求时,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果。这个时候就要用到另外一个函数,rank()和dense_rank()。

rank()和dense_rank()区别:

1、RANK()
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,4&middot;&middot;&middot;&middot;&middot;&middot;
2、DENSE_RANK()
这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,2&middot;&middot;&middot;&middot;&middot;&middot;

读到这里,这篇“SQLServer中的row_number函数怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 向maven库中加需要的jar包
  2. C# 连接SqlServer数据库源码片段

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sqlserver row_number

上一篇:style-loader使用pitch方法原理是什么

下一篇:sqlServer实现分页查询的方式有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》