数据库环境:
SQL Server 2012
使用到的关键字:
offset、fetch、next、rows
简单示例:
declare @pageSize int,@currentPage intset @pageSize = 5set @currentPage = 2select * from AnalysisCodeorder by Id offset (@currentPage-1)*@pageSize rows fetch next @pageSize rows only;
这句SQL的意思就是:跳过 (@currentPage-1)*@pageSize 条记录,查询之后的 @pageSize 条记录。这种分页够简单!查阅相关资料表示性能也比row_number() over(),双order要好。
使用 OFFSET-FETCH 中的限制:
- ORDER BY 是使用 OFFSET 和 FETCH 子句所必需的。
- OFFSET 子句必须与 FETCH 一起使用。永远不能使用 ORDER BY … FETCH。
- TOP 不能在同一个查询表达式中与 OFFSET 和 FETCH 一起使用。
- OFFSET/FETCH 行计数表达式可以是将返回整数值的任何算术、常量或参数表达式。该行计数表达式不支持标量子查询。
参考MSDN:
http://technet.microsoft.com/zh-cn/library/gg699618.aspx