Sql server 仅显示25个结果,但返回结果的完整计数

Sql server 仅显示25个结果,但返回结果的完整计数,sql-server,stored-procedures,ssms,resultset,rowcount,Sql Server,Stored Procedures,Ssms,Resultset,Rowcount,是否可以将存储过程的结果集限制为25个结果,但返回的结果总数不受限制?此存储过程用于web应用程序的搜索页面,因此我们已分页结果,每页显示25个结果,但需要@@rowcount来显示“您的结果已返回”结果 我尝试过一些显而易见的方法,比如 SELECT COUNT(*) FROM [derived table containing the search query] 但由于数据结构、参与表中的行数、计数*比查询本身花费的时间更长 我提前为那些坚持格式的人道歉,他们对这一点还是很陌生的 如果不

是否可以将存储过程的结果集限制为25个结果,但返回的结果总数不受限制?此存储过程用于web应用程序的搜索页面,因此我们已分页结果,每页显示25个结果,但需要@@rowcount来显示“您的结果已返回”结果

我尝试过一些显而易见的方法,比如

SELECT COUNT(*) 
FROM [derived table containing the search query]
但由于数据结构、参与表中的行数、计数*比查询本身花费的时间更长


我提前为那些坚持格式的人道歉,他们对这一点还是很陌生的

如果不是从派生表而是从原始表中查询计数,并且只获取应该比从派生表中获取的计数快的计数。然后可以将其存储在输出参数中

除此之外,我看不到另一种方法来做到这一点

您可以尝试与公共_table_表达式一起使用

那么,为什么不:

declare @numrows int;
SELECT @numrows = Count(*) FROM sys.databases;
PRINT @numrows; -- or assign to output param

谢谢,野狗。不幸的是,SP的编写方式非常困难。我真的希望有一种方法可以设置选项discard results after execution(在执行后使用T-SQL命令),这样查询将如下所示:-T-SQL change to discard results SELECT*FROM SELECT col1,col2,从MyTable X ORDER BY X.col1 DESC选择@@ROWCOUNT AS TotalHi-撤消T-SQL更改以放弃结果从SELECT col1,col2中选择*从MyTable X ORDER BY X.col1 DESC偏移量0行仅取下25行这正是我想要的,谢谢@Storm斗篷!!诚然有点尴尬;我不知道你可以做一个计数,我想包括一个计数需要一个GROUPBY子句。再次感谢!
declare @pageIndex int = 1
declare @pageCount int = 25
SELECT CustomerID, CompanyName,COUNT(*) OVER () as TotalCount
FROM Customers
ORDER BY CompanyName
OFFSET ( @pageIndex-1 ) * @pageCount ROWS
FETCH NEXT @pageCount ROWS ONLY
declare @numrows int;
SELECT @numrows = Count(*) FROM sys.databases;
PRINT @numrows; -- or assign to output param