SQL Server 2012:限制count(*)查询的最大行数

时间:2012-11-02 15:34:19

标签: sql-server sql-server-2012

有没有办法限制count(*)的最大值,所以它在找到N行后停止计算行数?

我尝试了 SET ROWCOUNT N TOP N ,但是当我使用SELECT count(*)FROM MyTable时会忽略它们。

3 个答案:

答案 0 :(得分:2)

SELECT Count(*)
FROM (
   SELECT TOP(@MaxRowCount) *
   FROM MyTable
) as q

我认为您的WITH解决方案可能不具备效果,因为它必须迭代每一行才能分配ROW_NUMBER()。我相信这里的解决方案会表现得更好。

答案 1 :(得分:1)

在你做计数后,你不能用IF语句吗?

或者是子查询?

选择count(*)作为usercount 来自用户 其中userid in(从用户中选择前5000个用户ID)

这将为您提供5000或更低的潜在用户数。

答案 2 :(得分:1)

我自己找到了解决方案。

With OrderedRows AS(
    SELECT ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNumber
    FROM MyTable
)
SELECT count(*) FROM OrderedRows WHERE RowNumber <= @MaxRowCount;