使用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()排序後再分頁查詢時,需確保排序結果無爭議性,若是排序結果有爭議性,可在按需求排序後增長按惟一字段排序條件!分頁