赞
踩
在使用sql server数据库时,分页方式之一会常用到row_number结合over进行重新排序分页
如果需要根据班级分组,分别显示对应班级的排名,rank就是很好的函数
1)为每个分组生成唯一序号,相同值,序号不对,可用于分页
2)函数“ROW_NUMBER”必须有 OVER 子句
row_number() over() as ‘自定义字段’
3)缺点
不适合多语句查询分页,因为这个是全表查询
错误写法:
- select top 10 *
- from (
- select row_number()
- over(order by t.create_time desc) as rowindex,t.*
- from (
- select * from domain_table a
- where 1=1
- ) t
- ) new_table
- where rowindex>((1-1)*10) and rowindex<=1*10
- order by new_table.create_time desc
正确写法
- select top 10 *
- from (select row_number()
- over(order by create_time desc) as rownumber,*
- from domain_table) temp_row
- where rownumber>((1-1)*10);
1)order by + 一般是时间字段或者排序字段,必填
2)函数“ROW_NUMBER”必须有包含 ORDER BY 的 OVER 子句
3)partition by +字段,可以进行按字段分组,需要也会根据不同分组从1开始
1)也是为每个分组生成唯一序号,相同值时,序号相同,可用于排行
2)多用于需要分组并且每个分组有各自从1开始的排序
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。