mssql server 2008的分页查询在'OFFSET'附近抛出错误的语法
我正在jsp中编写分页(并且我是编写sql的新手)。mssql server 2008的分页查询在'OFFSET'附近抛出错误的语法
我做我的研究,发现简单的查询从
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'.
我在这里错过了什么?提前致谢。
这是我的工作,现在工作正常。
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)
。
请随时免费的,如果任何优雅的方式提供给建议我。
你会发现从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
]
}
感谢您的info.But有趣的一点是ORDER BY正在为我工作。 – 2013-03-22 07:31:01
是的,顺序会工作得很好,它是分页部分,只有SQL SERVER 2008 – 2013-03-22 07:32:10
啊..之后才可用。在某些解决方法后,我发现了一些查询并在此发布。如果可能,请检查一次吗? – 2013-03-22 07:47:20
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
我更进了一步。添加了一些变量来使信息输入更好一些。在我的公司,我们有更老的数据库,所以这个feed帮助了我很多。
嗨,我们怎样才能通过查询添加订单?我试过了。它给了我一个错误,说“ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中是无效的,除非还指定了TOP或FOR XML。”是否有可能具有集合函数,如“分组依据”? – 2014-02-24 14:35:20