[英]Pagination query for mssql server 2008 Throwing Incorrect syntax near 'OFFSET'
我正在研究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'.
给出错误Incorrect syntax near 'OFFSET'.
错误Incorrect syntax near 'OFFSET'.
我错过了什么? 提前致谢。
您将从ORDER BY子句(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
]
}
这是我的工作,现在工作正常。
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
在上面的查询中,我用(pageNUmber+1)
替换(1+1)
(pageNUmber+1)
。
如果有任何优雅的方式,请随时建议我。
我希望这会有所帮助(适用于SQL Server 2008)。
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
我更进了一步。 添加了一些变量,以便更好地输入信息。 在我的公司,我们有较旧的数据库,所以这个饲料帮助了我很多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.