SQLServer2005 Row_Number()详解
来源:互联网 发布:mysql 1317 编辑:程序博客网 时间:2024/05/01 03:43
Sql Server 2000的自定义分页,要实现显示某一页,就返回那一页数据的效果的方法实在不尽人意.网上很多通用的分页存储过程,但看着就头大.如果使用我前面提到的使用in,not in,top来进行返回特定页,特殊的限制又会比较多(比如ID要递增).现在Sql Server 2005中提供了一个函数ROW_NUMBER(),可以使自定义分页变得简单许多.
我们先来看看ROW_NUMBER()是干什么的.执行下面这段SQL语句:
SELECT [ReportID],[UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
执行结果如下图所示:
很简单,ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID).现在,你看到了自定义分页的影子了吗?:)下面,我们看看怎么具体应用这个RowNo进行分页.
现在,假设我每一页的数据是10条,我们就可以使用如下所示的SQL语句返回指定页的数据:
@"
SELECT TOP 10 *
FROM
(
SELECT top 10 [InstanceName], [UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
) AS A
WHERE RowNo > " + pageIndex*10
pageIndex就是我们需要数据的页数.很简单,不是吗?并且,这种方式几乎没有什么限制,因为他相当于对于任何检索,都生成了一个新的排序列.我们就可以使用该列进行自定义分页.
我们先来看看ROW_NUMBER()是干什么的.执行下面这段SQL语句:
SELECT [ReportID],[UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
执行结果如下图所示:
很简单,ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID).现在,你看到了自定义分页的影子了吗?:)下面,我们看看怎么具体应用这个RowNo进行分页.
现在,假设我每一页的数据是10条,我们就可以使用如下所示的SQL语句返回指定页的数据:
@"
SELECT TOP 10 *
FROM
(
SELECT top 10 [InstanceName], [UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
) AS A
WHERE RowNo > " + pageIndex*10
pageIndex就是我们需要数据的页数.很简单,不是吗?并且,这种方式几乎没有什么限制,因为他相当于对于任何检索,都生成了一个新的排序列.我们就可以使用该列进行自定义分页.
- SQLServer2005 Row_Number()详解
- SQLSERVER2005的ROW_NUMBER具体使用
- SQLServer2005 row_number() 分页存储过程
- SQLSERVER2005的ROW_NUMBER具体使用[转]
- ROW_NUMBER() 分类标序号(sqlserver2005以上)
- ROW_NUMBER()函数使用详解
- SQLServer2005增加的排序函数RANK(),DENSE_RANK(),ROW_NUMBER(),NTILE()
- sqlserver2005巧用row_number和partition by分组取top数据
- sqlserver2005使用row_number() over分页的实现方法
- windows7安装sqlserver2005详解
- windows7安装sqlserver2005详解
- SqlServer2005 数据库同步配置详解
- ROW_NUMBER()
- row_number()
- ROW_NUMBER ( )
- row_number()
- row_number
- row_number
- Newlib移植成功
- JAVA常用类的使用方法
- 如何复制行
- 使用ORDER BY子句进行排序
- SAP 提供完善的业务流程整合构想 (转述)
- SQLServer2005 Row_Number()详解
- sql server中的时间函数
- spring
- ORACLE 学习文档
- asp.net中操作文件夹
- VC中基于 Windows 的精确定时[转载]
- OpenGL一个链接错误的排除
- DMO(DirectX Media Object)的工程创建过程及其调用方式
- 物體的移動