我一直试图让分页查询适用于MSSQL。我测试了连接,如果我只是运行一个选择它运行正常。所以没有连接问题。
$result = mssql_query("SELECT * FROM DriverAppInfo ORDER BY appdate")
以下是我的代码。我希望返回前20条记录然后能够增加$ startrow并让下一页显示这些结果。我已经能够将它用于MYSQL,但转换到MSSQL并且没有LIMIT函数会让我陷入循环。
if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
$startrow = 0;
} else {
$startrow = (int)$_GET['startrow'];
}
$result = mssql_query("SELECT TOP 20 FROM DriverAppInfo WHERE appdate NOT IN
(SELECT TOP $startrow FROM DriverAppInfo ORDER BY appdate ASC )
ORDER BY appdate ASC")
or die("Couldn't connect to SQL Server Table on $myDB");
然后在连接到表时出错。所以我的查询语法有问题。任何帮助将不胜感激
答案 0 :(得分:2)
在SQL Server中,row_number()
提供了一种简单的分页方法:
select *
from (
select row_number() over (order by appdate) rn
, *
from DriverAppInfo
) as SubQueryAlias
where rn between 21 and 40 -- Second page
如果您有SQL Server 2012,则可以使用offset
:
select *
from DriverAppInfo
order by
appdate
offset 20 rows
fetch next 20 rows only