这是我查询的简化版本:
select myCol1, mycol2 from MyTable where mycol3 = 'blah'
OFFSET (@skip) rows fetch next (@take) rows only
这按预期工作,但是我正在尝试修改它,以便我也获得返回给我的所有找到的记录的全部计数。这是我目前的尝试,但是DataCount
总是返回不正确的 1。我哪里出错了?
select t.myCol1, t.mycol2, count(t.id) as DataCount from MyTable t where mycol3 = 'blah'
group by myCol1, myCol2
OFFSET (@skip) rows fetch next (@take) rows only
您可以使用窗口函数:
select myCol1, mycol2, count(*) over() dataCount
from MyTable
where mycol3 = 'blah'
order by ??
offset (@skip) rows fetch next (@take) rows only
请注意,您的查询似乎缺少一个order by
子句 - 没有它,则无法定义记录在结果集中的排序方式,这可能会使结果在多次执行同一查询时不一致(当您分页时可能会发生这种情况(。