2

私はjspでページ付けに取り組んでいます(そしてSQLを書くのは初めてです)。

私は自分の調査を行い、からの簡単なクエリを見つけました

SQLServer2008でのページネーションとSQLServer2008で ページネーションを行う方法

SELECT * FROM document  ORDER BY id OFFSET
                    "+iPageNo+"  ROWS FETCH NEXT 10 ROWS ONLY;

上記のクエリでは、ipageNoが初めて0になります(手動で1を入力してみた場合でも)

まだエラーを出しているIncorrect syntax near 'OFFSET'.

私がここで逃したものは何ですか?前もって感謝します。

4

4 に答える 4

5

ORDER BY 句 (Transact-SQL)からわかるように、この構文は SQL Server 2008 ではサポートされていません。

2008年のドキュメントから見ることができます

**Syntax**

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
]

2012年のドキュメントとして

**Syntax**
ORDER BY order_by_expression
    [ COLLATE collation_name ] 
    [ ASC | DESC ] 
    [ ,...n ] 
[ <offset_fetch> ]


<offset_fetch> ::=
{ 
    OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    [
      FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
    ]
}

たぶん、SQL Server 2008 でページネーションを行う方法も見てください。

于 2013-03-22T06:41:07.753 に答える
3

これが私の回避策であり、現在は正常に機能しています。

SELECT * FROM   (SELECT ROW_NUMBER() OVER(ORDER BY id) AS rownumber,*
        FROM document)  as somex  WHERE  rownumber >= (1+1)*10-9
                         AND rownumber <=(1+1)*10

上記のクエリでは、 に置き換え(1+1) てい(pageNUmber+1)ます。

ここに画像の説明を入力

エレガントな方法があれば、お気軽に提案してください。

于 2013-03-22T07:45:07.050 に答える
1

これがお役に立てば幸いです (SQL Server 2008 で動作します)。

于 2013-03-25T16:45:59.540 に答える