3

count(*) の最大値を制限して、N 行が見つかった後に行のカウントを停止する方法はありますか?

SET ROWCOUNT NTOP Nの両方を試しましたが、 SELECT count(*) FROM MyTable を使用すると無視されます。

4

3 に答える 3

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

WITHを割り当てるために各行を反復する必要があるため、ソリューションのパフォーマンスが低下する可能性があると思いますROW_NUMBER()。ここでの解決策はより良いパフォーマンスを発揮すると思います。

于 2012-11-02T18:36:31.563 に答える
1

私は自分で解決策を見つけました。

With OrderedRows AS(
    SELECT ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNumber
    FROM MyTable
)
SELECT count(*) FROM OrderedRows WHERE RowNumber <= @MaxRowCount;
于 2012-11-02T16:06:38.647 に答える
1

カウントを行った後に IF ステートメントでそれを行いませんか?

それともサブクエリですか?

select count(*) as usercount from users where userid in (ユーザーから上位 5000 のユーザー ID を選択)

これにより、5000 以下の潜在的なユーザー数が得られます。

于 2012-11-02T15:38:56.967 に答える