如何在SELECT T-SQL命令的结果集中包含返回行的总数?

前端之家收集整理的这篇文章主要介绍了如何在SELECT T-SQL命令的结果集中包含返回行的总数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想询问是否有一种方法可以使用Row_Number(sql 2005)命令从TSQL查询的返回结果集中包含总行数(作为附加列).
例如,以与此类似的形式从Book表获取查询结果集:
RowNum   BookId     BookTitle    TotalRows
--------------------------------------------
1        1056       Title1       5    
2        1467       Title2       5    
3        121        Title3       5    
4        1789       Title4       5    
5        789        Title5       5

查询是在存储过程中实现的自定义分页功能的一部分.目的是仅返回当前页面索引的记录,并限制为页面大小,还可以返回select语句中的记录总数,以确定结果集页面的总数.

解决方法

sql Server 2008和更高版本中,将COUNT(*)OVER()添加查询中的列名称之一,并将其​​返回的总行数填充.它在每一行中重复,但至少该值可用.许多其他解决方案不起作用的原因在于,对于非常大的结果集,您将不会知道总数,直到在许多情况下迭代所有不实际的行(尤其是顺序处理解决方案)之后.例如,这种技术可以让您调用第一个IDataReader.Read()后的总计数.
select COUNT(*) OVER () as Total_Rows,... from ...

猜你在找的MsSQL相关文章