2012-05-12 13 views
2

SQLを使用してテーブルから特定の範囲の行を選択できる必要があります。SQL Server 2005でサーバーサイドページングを実行する方法

サーバー側のページングを実行するために使用するTSQLコマンドは何ですか?

私はサーバー側のページングを考慮しませんか? 私はテーブルから最初の10行を選択し、いくつかの計算をしたい

cmd.commandText :="select top 10 from table " 
ada.fill(dt) 
for each(datarow dtr in dt.rows) 
{ 
//calulation 
} 

その後、私は次の10行と同じ繰り返しを選択するテーブル

+0

はテーブル – dfgv

+1

にはidフィールドが存在しない(あなたがorderNum値を重複している場合は20以上を取得することができます)を見てみましょう上に移動し、キーワードをスキップしてください... – JleruOHeP

+0

これは実際にはページングではなくバッチに関するものです。この種の処理を、アプリケーションにデータをフェッチするのではなく、SQL Server内で直接実行することを検討することをお勧めします。取り込んだ行は、アプリケーションでどこで処理している間に変更されたかを考慮してください。 – Filburt

答えて

0

の終わりまで、あなたがこれを達成するためにROW_NUMBERを使用する必要があります。ページング時のROW_NUMBERの使用については、linkを参照してください。

+0

私はこれを前に見ましたが、私はどのようにCでそれを行うことができないのですか# – dfgv

3

マイクロソフトは、ページングを支援するためにSQL Server 2005でROW_NUMBER()を導入...

SELECT * FROM (  
    SELECT   
    ROW_NUMBER() OVER (ORDER BY City) AS row, * 
    FROM Cities 
) AS a WHERE row BETWEEN 1 AND 10 

は、動的に次のセットを取得するには、1と10のための変数を使用します。

create proc dbo.whatever_select_paging 
    @int page 
as 

SELECT * FROM (  
    SELECT   
    ROW_NUMBER() OVER (ORDER BY City) AS row, * 
    FROM Cities 
) AS a WHERE row BETWEEN ((@page-1) * 10) +1 AND (@page * 10)-1 

go 
+0

私の質問が変わったのはどうですか?誰が管理を変更しましたか? – dfgv

+0

@eldhose - Joshはそれが不明であったため編集しました。彼は 'C# 'のすべての言及を削除したように見えるか、またはあなたが彼の改訂で2百万行を処理するためにこれをしたいという事実。 'C# 'を使って200万行を10のバッチで処理する必要があるのはどういうことですか? –

+0

いいえただの例ではありません。私は自分のテーブルの220000行に10を書きましたが、ループ内のこれらすべてのデータを処理したいです。 – dfgv

-1
SELECT TOP 20 FROM MyData 
WHERE orderNum <= 61 
ORDER BY orderNum DESC 

これは、20行は80行して行61から始まるでしょう

関連する問題