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