我正在尝试将提取到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条记录。 上述方法还包括一个额外的列(它需要一个主键)。我也希望摆脱那一栏!
另外,由于我必须显示页码(分页标签),我希望预先计算总记录数。
谢谢!
答案 0 :(得分:1)
学习使用LINQ。很有效率。
修改强>
好吧。
SELECT *
FROM etc
WHERE Row_Number() BETWEEN '".$startLimit."' AND '".$endLimit."'
可能会为你工作。记住要逃避变量,这样就不会有危险的代码。