sql 排序函数ROW_NUMBER分页返回数据
分页从数据库返回一张表的某些条数据
假设我需要查询 系统表 sys.all_columns中的数据,每次查询10条
第一次查询第1-10条数据
第二次查询第11-20条数据
第三次查询第21-30条数据
......以此类推
于是我想到了sqlserver的ROW_NUMBER()排序函数,可以根据排序的字段返回行号
详细请查看微软官方文档 https://docs.microsoft.com/zh-cn/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017
ROW_NUMBER()语法
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
参数
PARTITION BY value_expression
将 FROM 子句生成的结果集划分为应用 ROW_NUMBER 函数的分区。 value_expression 指定对结果集进行分区所依据的列。 如果未指定 PARTITION BY,则此函数将查询结果集的所有行视为单个组。 有关详细信息,请参阅 OVER 子句 (Transact-SQL)。 order_by_clause
ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。 它是必需的。 有关详细信息,请参阅 OVER 子句 (Transact-SQL)。
返回类型
bigint
分页示例:
查询第一页时
DECLARE @Page_index INT --页数
DECLARE @Page_size INT --每页条数 SET @Page_index=1
SET @Page_size=10 DECLARE @BNUN INT --开始条数
DECLARE @ENUM INT --结束条数 SET @BNUN=(@Page_index-1) * @Page_size
SET @ENUM=@Page_index * @Page_size --排序取表中第几条到第几条数据
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY name) AS RowNum, *
FROM (SELECT * FROM master.sys.all_columns) AS T ) AS N WHERE RowNum > @BNUN And RowNum <= @ENUM
--返回总条数
SELECT COUNT(1) FROM (SELECT * FROM master.sys.all_columns) AS t
查询结果

查询第n页时
DECLARE @Page_index INT --页数
DECLARE @Page_size INT --每页条数 SET @Page_index=n
SET @Page_size=10 DECLARE @BNUN INT --开始条数
DECLARE @ENUM INT --结束条数 SET @BNUN=(@Page_index-1) * @Page_size
SET @ENUM=@Page_index * @Page_size --排序取表中第几条到第几条数据
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY name) AS RowNum, *
FROM (SELECT * FROM master.sys.all_columns) AS T ) AS N WHERE RowNum > @BNUN And RowNum <= @ENUM
--返回总条数
SELECT COUNT(1) FROM (SELECT * FROM master.sys.all_columns) AS t
sql 排序函数ROW_NUMBER分页返回数据的更多相关文章
- SQL Server排序函数row_number和rank的区别
SQL Server排序函数row_number和rank的区别 直接看测试结果 declare @table table(name varchar(100),amount int, memo var ...
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
腾讯云图片鉴黄集成到C# 官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...
- mssql sqlserver 分组排序函数row_number、rank、dense_rank用法简介及说明
在实际的项目开发中,我们经常使用分组函数,对组内数据进行群组后,然后进行组内排序:如:1:取出一个客户一段时间内,最大订单数的行记录2: 取出一个客户一段时间内,最后一次销售记录的行记录——————— ...
- IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
IBatis 分页,这里没有使用其他插件,只使用最原始的方法. 输入参数: int currentPage 当前页 int pageSize 每页大小 Hashtable findCondition ...
- SQL Server 怎么在分页获取数据的同时获取到总记录数
SQL Server 获取数据的总记录数,有两种方式: 1.先分页获取数据,然后再查询一遍数据库获取到总数量 2.使用count(1) over()获取总记录数量 SELECT * FROM ( SE ...
- SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. 转载请注明此文原创自 CSDN TJVictor的专栏:ht ...
- row_number()分页返回结果顺序不确定
之前通过row_number()实现分页查询时: select top [PageSize] * from ( select row_number() over (order by id desc) ...
- Sql Server函数全解<三>数据类型转换函数和文本图像函数
阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...
- Sql Server函数全解(三)数据类型转换函数和文本图像函数
一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型和字符类型,隐士 ...
随机推荐
- arcgis api 3.x for js 地图加载多个 SHP 图层压缩以及 json 文件展示(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- Odoo开源ERP:功能模块操作-销售功能篇
客户基础资料 1. 所有的客户基础资料,智云ERP开账启用时,期初的客户数据如果大于200条,可以批量导入: 2. 点“销售/订单/客户”菜单可以查看.编辑修改.搜索所有的客户基础资料: 3. 多层级 ...
- Zabbix系统介绍
监控概述 硬件监控 IPMI介绍文档:http://www.ibm.com/developerworks/cn/linux/l-ipmi/ 温度:使用ipmi对硬件温度,进行监控 硬盘:使用MegaC ...
- cmd 配置dchp服务器
1.安装DHCP服务器角色,这样在netsh下才会有dhcp上下文 2.编写配置dhcp的脚本 从命令行运行netsh有两种语法: 比如要获取已经配置的网络接口列表 1.写全 netsh -r Rem ...
- XMPP协议之消息回执解决方案
苦恼中寻找方法 在开始做即时通信时就知道了消息回执这个概念,目的是解决通讯消息因为各种原因未送达对方而提供的一种保障机制.产生这个问题的原因主要是网络不稳定.服务器或者客户端一些异常导致没有接收到消息 ...
- PHP全栈学习笔记14
一.搭建PHP开发环境 Apahce服务器 Dreamwear创建站点 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- 用github展示自己的网页要做哪些准备(总结)
以前,如果想建立一个自己的网站,需要买域名,买存储空间,对个人来说维护成本比较高. 并且很多人只是想有一个网页展示自己的作品或者展示个人的简历. 在github越来越成熟的现在,直接使用github托 ...
- 打开ubantu报错(invalid environment block. Press any key to continue)
今天向往常一样打开ubantu ,却无法正常打开,如下图 意思是无效的环境模块,随意按键继续,按任意键后如下图 折腾了许久问题也没有得到解决,后来在某篇博客中找到了答案 https://blog.cs ...
- [Swift]动态变化顶部状态栏(statusBar)的颜色
顶部状态栏(statusBar)的两种样式: (1).default 样式:黑色. (2).light 样式:白色 一.无导航栏情况 如果没有使用导航控制器 UINavigationControlle ...
- Java数据结构和算法 - 高级排序
希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法. A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插 ...