我在SQL Server 2005中使用row_number over()功能进行了昂贵的查询。在对查询进行分页时,我仅返回这些记录的子列表。但是,我还要返回记录总数,而不仅仅是分页的子集。有效运行查询两次以获得计数是不可能的。
选择count(*)也是不可能的,因为当我尝试这样做时,性能绝对糟糕。
我真正想要的是@@ ROW_NUMBERROWCOUNT :-)
最佳答案
与OVER(PARTITION BY ..)一起使用时,检查COUNT(*)聚合,如下所示:
SELECT
ROW_NUMBER() OVER(ORDER BY object_id, column_id) as RowNum
, COUNT(*) OVER(PARTITION BY 1) as TotalRows
, *
FROM master.sys.columns
这是恕我直言,做到这一点的最佳方法,而无需执行两个查询。
关于sql - 使用row_number从查询中获取@@ rowcount的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038506/