使用ROW_NUMBER() 排序后分页查询的坑

使用ROW_NUMBER() 排序后分页查询,当排序字段有重复记录时会致使分页查询结果出错:spa

SELECT * FTOM (SELECT ROW_NUMBER() OVER(ORDER BY T.KT_NUM DESC) pos,T.* FROM T_KT)) WHERE POS > 0 AND POS <= 10 --查询前10条

SELECT * FTOM (SELECT ROW_NUMBER() OVER(ORDER BY T.KT_NUM DESC) pos,T.* FROM T_KT)) WHERE POS > 10 AND POS <= 20 --查询11-20条

SELECT * FTOM (SELECT ROW_NUMBER() OVER(ORDER BY T.KT_NUM DESC) pos,T.* FROM T_KT)) --查询全部

如上例子:当KT_NUM字段有重复记录时会致使3次查询时候排序POS不统一,从而致使分页查询出结果有误排序

解决:使用ROW_NUMBER()排序后再分页查询时,需确保排序结果无争议性,若是排序结果有争议性,可在按需求排序后增长按惟一字段排序条件!分页

相关文章
相关标签/搜索