sql - 使用row_number从查询中获取@@ rowcount的有效方法

标签 sql sql-server sql-server-2005

我在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/

相关文章:

MySQL从具有多个记录的多个表中选择最高连接值的单个记录

SQL Server 2005 DateTime(仅返回 hh :mm)

sql - 暂时关闭约束 (MS SQL)

java - 如何从 Java 中的 T-SQL 存储过程获取返回值?

sql - 像这样的sql查询如何进行分组

sql - Oracle SELECT 前 10 条记录

sql - 为什么要执行表扫描?

android - View 中没有此类列错误

sql-server - Entity Framework 和 SQL Server 优化顾问

sql-server - T-Sql 从货币数据类型中删除小数点