mssql server 2008的分页查询在'OFFSET'附近抛出不正确的语法

时间:2013-03-22 06:36:06

标签: sql sql-server sql-server-2008 jsp pagination

我正在研究jsp中的分页(我是编写sql的新手)。

我完成了我的研究,并从

中找到了简单的查询

pagination in SQL server 2008How to do pagination in 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 个答案:

答案 0 :(得分:5)

您将从ORDER BY Clause (Transact-SQL)注意到SQL Server 2008不支持此语法。

您可以从2008年的文档中看到

**Syntax**

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

其中2012 documentation

**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
    ]
}

也许还要看看how to do pagination in sql server 2008

答案 1 :(得分: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)

enter image description here

如果有任何优雅的方式,请随时向我推荐。

答案 2 :(得分:1)

我希望this能够提供帮助(适用于SQL Server 2008)。

答案 3 :(得分:0)

public ActionResult CreateCondition(int requestedBurnsID, int conditionsReasonsID)
    {
        BurnDecision burnDecision = new BurnDecision();
        burnDecision.RequestedBurnsID = requestedBurnsID;
        burnDecision.ConditionsReasonsID = conditionsReasonsID;

        //Find BurnSiteID
        RequestedBurn requestedBurn = db.RequestedBurns.Find(burnDecision.RequestedBurnsID);
        ViewBag.burnSitesID = requestedBurn.BurnSitesID;
        db.BurnDecisions.Add(burnDecision);
        db.SaveChanges();


        return RedirectToAction("Index", "RequestedBurns", new { burnSitesID = ViewBag.burnSitesID, requestedBurnsID = burnDecision.RequestedBurnsID });

    }

我更进了一步。添加了一些变量,以便更好地输入信息。在我的公司,我们有较旧的数据库,所以这个饲料帮助了我很多。