欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL中用OFFSET FETCH NEXT 分页的坑

程序员文章站 2024-02-20 16:52:42
...

在SQL2012后的版本中支持了OFFSET index FETCH NEXT page_size ROWS ONLY的分页方式,但要分页就必须要有排序,而排序的字段选择的不对,就有可能造成分页结果不正确,比如第1页和第2页的数据有重复。为什么呢?

究其原因,是因为排序字段的数据不唯一,或才有null,比如按价格排序,有同一价格的商品很多,结果就会造成排序错误。所以需要选择唯一值的字段来排序,比如自增的索引、GUID、KEY等,示例代码如下


DECLARE @PageIndex INT
DECLARE @PageSize INT
SET @PageIndex=0
SET @PageSize=10
 SELECT * FROM TProduct ORDER BY Product_Key DESC
 OFFSET @PageIndex * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY