2

我正在使用 jsp 进行分页(而且我是编写 sql 的新手)。

我做了我的研究,发现了简单的查询

SQL Server 2008 中的分页 以及如何在 SQL Server 2008 中进行分页

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 回答
0
DECLARE @Page int
SET @Page = 2
DECLARE @Amount int
SET @Amount = 25
SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY group_id) AS rownumber, * FROM table_name 
WHERE Column LIKE '%Search_Value%') as somex  
WHERE  rownumber >= (@Page+1)* @Amount-(@Amount - 1) AND rownumber <= (@Page+1) * @Amount

我更进一步。添加了一些变量以使输入信息更好一些。在我的公司,我们有较旧的数据库,所以这个提要对我帮助很大。

于 2016-10-24T17:20:45.913 回答