2012-03-28 25 views
2

私はこれを行うクエリを作成しようとしています: 例えば、テーブルに100個のレコードがあります。私はクエリを呼び出す.net形式を持っています。私はhttp://mysite.com?id=2のようなクエリインデックスパラメータpageindexを持っています。 私が今したいのは、id = NULLの場合、1から20のidを持つテーブルから1番目のレコードセットを取得し、id = 2なら1から20を意味し、2番目のrecordw 20〜40、id = 3の場合、そのテーブルから40〜60のレコードを意味する3番目のレコードセットを取得します。
これが可能かどうかを知りたいです。事前に どうもありがとう、LazialeSQLクエリの選択

+1

現在のページの外観はどうなっていますか?現在のデータベースコードはどうなっていますか? –

+0

[SQL Serverのページング](http://www.codeguru.com/csharp/net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm) –

答えて

0

は、(0のベース)

SELECT TOP 20 * FROM MyTable WHERE (ID > @Page*20) ORDER BY ID 

あなたの場合はページ番号ですMS SQLのページングのスタイルを使用したいとIDはラインであなたが行うことができますされていない

WITH NewTable AS (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM MyTable) 
SELECT TOP 20 * FROM NewTable WHERE (RowNumber > @Page*20) 

参考: http://msdn.microsoft.com/en-us/library/ms186734.aspx

http://msdn.microsoft.com/en-us/library/ms175972.aspx

0
SELECT col1, col2 
FROM (
    SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum 
    FROM MyTable 
) AS MyDerivedTable 
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow 

は「MSSQLリミットオフセット」検索キューを経由してグーグルでは、Row Offset in SQL Serverから最初の結果を取ら。あなたがそう言うと、あなたがそれを作る、そしてあなたが

@Pageを行うことができますIDは1から100までのラインにある場合

+0

質問は尋ねていませんMySQL。どのようにSQL Serverでそれを行うのですか? –

+0

答えを更新しました。 – iehrlich