我使用此查询从表Customers中获取页面和索引受限制的结果。例如:Sql服务器返回选择存储过程中的行数
如果@iStartIndex = 0和@iRowsPerPage = 10的结果为0 10行 - 10
SELECT
Name, LastName, City
FROM Customers
OFFSET @iStartIndex ROWS
FETCH NEXT @iRowsPerPage ROWS ONLY
我的问题是,我还需要一些从查询中的所有行。例如:如果有1000行,查询将只选择10行。我需要这10行,但我也需要知道结果中有多少行 - 在这种情况下为1000行。
我已经试过的是返回@@ ROWCOUNT,但它返回10,最后一个查询的结果。 我也试着写一个单独的查询:
SELECT COUNT(*)
FROM Customers
和下面我写了原来的查询。
是否有一种方法可以返回行,还可以将行数作为标量值返回到同一存储过程中?
你必须做两个查询,没有办法绕过它。如果您喜欢(通过将第一个结果分配给变量)或使用输出参数,仍然可以将这些查询组合到一个结果集中。 (从技术上讲,你可以在一个查询中填充第一个查询中的第一个查询,但这仍然是后台的两个查询。) –
嗯......如果结果中有10行,你可以解释10不是正确的号码?如果您想要获得客户总数,则必须将其作为单独的查询(或子查询)来完成。 –
它可以用窗口聚合来完成,但大多数人报告性能比运行两个单独的查询更差 –