SQL中用OFFSET FETCH NEXT 分页的坑

在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

 

你可能感兴趣的:(Sql)