当前位置:   article > 正文

【小5聊】sql server 分页和分组-row_number()和over()、rank()和over()的小区别_rownumber()over()和rank的区别

rownumber()over()和rank的区别

在使用sql server数据库时,分页方式之一会常用到row_number结合over进行重新排序分页

如果需要根据班级分组,分别显示对应班级的排名,rank就是很好的函数

1、row_number()函数

1)为每个分组生成唯一序号,相同值,序号不对,可用于分页

2)函数“ROW_NUMBER”必须有 OVER 子句

row_number() over() as ‘自定义字段’

3)缺点

不适合多语句查询分页,因为这个是全表查询

错误写法:

  1. select top 10 * 
  2. from (
  3. select row_number() 
  4. over(order by t.create_time desc) as rowindex,t.* 
  5. from (
  6.         select * from domain_table a
  7.         where 1=1
  8.     ) t
  9. ) new_table
  10. where rowindex>((1-1)*10) and rowindex<=1*10
  11. order by new_table.create_time desc

正确写法

  1. select top 10 *
  2. from (select row_number()
  3. over(order by create_time desc) as rownumber,*
  4. from domain_table) temp_row
  5. where rownumber>((1-1)*10);

2、over()函数

1)order by + 一般是时间字段或者排序字段,必填

2)函数“ROW_NUMBER”必须有包含 ORDER BY 的 OVER 子句

3)partition by +字段,可以进行按字段分组,需要也会根据不同分组从1开始

3、rank()函数

1)也是为每个分组生成唯一序号,相同值时,序号相同,可用于排行

2)多用于需要分组并且每个分组有各自从1开始的排序

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/240808
推荐阅读
相关标签
  

闽ICP备14008679号