【发布时间】:2016-11-08 14:12:03
【问题描述】:
我使用此查询从表客户中获取页面和索引有限的结果。例如:
如果@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 不是正确的数字吗?如果您想获取客户总数,则必须将其作为单独的查询(或子查询)进行。
-
可以使用窗口聚合来完成,但大多数人报告性能比运行两个单独的查询更差
-
@SeanLange - 我还需要所有记录的数量。我使用jTable来显示记录和分页需要所有记录的数量。
标签: sql-server tsql