我正在研究jsp中的分页(我是编写sql的新手)。
我完成了我的研究,并从
中找到了简单的查询pagination in SQL server 2008和How 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'.
我错过了什么?提前谢谢。
答案 0 :(得分:5)
您将从ORDER BY Clause (Transact-SQL)注意到SQL Server 2008不支持此语法。
您可以从2008年的文档中看到
**Syntax**
[ ORDER BY
{
order_by_expression
[ COLLATE collation_name ]
[ ASC | DESC ]
} [ ,...n ]
]
**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
]
}
答案 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)
。
如果有任何优雅的方式,请随时向我推荐。
答案 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 });
}
我更进了一步。添加了一些变量,以便更好地输入信息。在我的公司,我们有较旧的数据库,所以这个饲料帮助了我很多。