目标很简单:获取总行数和一些数据页。
当我使用 OFFSET...FETCH 方法实现总行计数的分页时,我遇到了以下问题:当我们传递一些大页码时(例如,我们只有 100 行,但请求第 15 行,每页 10 条记录) COUNT(*) OVER() 语句从未调用过,因为结果集为空。因此,在这种情况下,我们无法获得正确的总行数。
即使通过大页码,有没有办法使用 OFFSET ... FETCH 方法获得正确的总行数?
仅供参考,OFFSET ... FETCH 方法是:
SELECT
...
Total = COUNT(*) OVER()
FROM Table1
ORDER BY Col1
OFFSET (@PageNum-1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;