分页sql查询

时间:2011-04-17 14:44:02

标签: sql sql-server-2008

为什么此查询在Sql Server 2008中不起作用?

Select Top @PageSize Skip @Page * @PageSize * From someTable

奇怪的是,即使这不起作用: -

Select Top @PageSize * From Tree

但是这个有效: -

Select Top 10 * From Tree

此声明在存储过程中。

提前致谢:)

2 个答案:

答案 0 :(得分:2)

您的第一个查询根本不是有效的语法。

第二个只需要括号(并且应该有一个ORDER BY

Select Top (@PageSize) * 
From Tree
ORDER BY /*TODO: Add column(s)*/

为了达到您在第一种情况下显然要做的事情,您可以使用ROW_NUMBERBETWEEN,如此答案T-SQL Skip Take Stored Procedure

答案 1 :(得分:2)

你需要括号

Select Top ( @PageSize ) * From Tree

然而,没有它的顺序没有多大意义

SKIP是无效的SQL Server语法,第一个查询无法正常工作