在本教程中,将学习如何使用SQL Server OFFSET FETCH
子句来限制查询返回的行数。OFFSET
和FETCH
子句是ORDER BY
子句的选项。 它们用于限制查询返回的行数。
以下是OFFSET
和FETCH
子句的语法:
在上面语法中,
OFFSET
子句指定在开始从查询返回行之前要跳过的行数。offset_row_count
可以是大于或等于零的常量,变量或参数。FETCH
子句指定在处理OFFSET
子句后要返回的行数。offset_row_count
可以是大于或等于1
的常量,变量或标量。OFFSET
子句是必需的,而FETCH
子句是可选的。 此外,FIRST
和NEXT
是同义词,因此可以互换使用它们。
以下图中说明了OFFSET
和FETCH
子句:
请注意,必须将OFFSET
和FETCH
子句与ORDER BY
子句一起使用。 否则将收到错误消息。OFFSET
和FETCH
子句比实现TOP
子句更适合实现查询分页解决方案。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
翻页存储过程:
CREATE PROC PageTest
@CurrentPage INT, --当前页
@PageSize INT --每页多少条
AS
BEGIN
SELECT *
FROM dbo.T
ORDER BY ID--这里一定得加Order By
OFFSET (@PageSize * (@CurrentPage - 1)) ROW FETCH NEXT @PageSize ROWS ONLY;
END;
————————————————
执行:
EXEC dbo.PageTest @CurrentPage = 2, -- int
@PageSize = 2 -- int
————————————————