使用MSSQL 2005分页记录

时间:2015-07-22 05:45:19

标签: php sql-server sql-server-2005

我正在尝试将提取到10页的记录分页(在MSSQL Server 2005上使用PHP AJAX)。 (我将SQL作为PHP字符串传递给MSSQL服务器) 我希望为每个页面显示按钮(例如,如果有45个记录,那么我希望显示5个按钮,每个按钮获取10个记录)。 我遇到过这段代码 -

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
          FROM      Orders
          WHERE     OrderDate >= '1980-01-01'
        ) AS RowConstrainedResult
WHERE   RowNum >= 1
    AND RowNum <= 10
ORDER BY RowNum

但这是非常无效的,因为首先从中提取整个数据库然后每次获取10行。 任何人都可以建议一些技术(适用于MSSQL服务器2005),一次只能获取10行而不是一次只获取整个100条记录。 上述方法还包括一个额外的列(它需要一个主键)。我也希望摆脱那一栏!

另外,由于我必须显示页码(分页标签),我希望预先计算总记录数。

谢谢!

1 个答案:

答案 0 :(得分:1)

学习使用LINQ。很有效率。

修改
好吧。

SELECT * 
FROM etc
WHERE Row_Number() BETWEEN '".$startLimit."' AND '".$endLimit."'

可能会为你工作。记住要逃避变量,这样就不会有危险的代码。