PHP SQL MYSQL 的 TOP 和 LIMIT 服务器替代方案

PHP SQL Server Alternative for TOP and LIMIT of MYSQL

我想弄清楚如何将我在 php mysql 中创建的代码翻译成 php sqlsrv。

基本上,我在MySQL中使用LIMIT来限制分页。然而,这在 SQL 服务器中不受支持,我真的很难像 3 个月一样解决这个问题。

下面是我想在 SQLSRV 上翻译的 MySQL 代码:

$start="";
$per_page = 1;
$start = $_GET['start'];
$max_pages = ($foundnum / $per_page);
if(!$start)
$start=0; 
$getquery = mysql_query("SELECT * FROM knowledgebase WHERE $construct LIMIT $start, $per_page");

下面的代码是我目前在 SQLSRV 中遇到的问题 运行:

$start="";
$per_page = 1;
$start = $_GET['start'];
$max_pages = ($foundnum / $per_page);
if(!$start)
$start=0; 
$construct1 ="SELECT * FROM ENSEMBLE WHERE $construct";
$run1=sqlsrv_query($con,$construct1, array(), array('scrollable' => 'keyset'));

我可以轻松地在代码行中添加 LIMIT $construct1 ="SELECT * FROM ENSEMBLE WHERE $construct";但我没有这样做,因为无论如何都不可能。

任何人都可以帮助我如何翻译或重写它? TIA.

TOP 相当于 sql 服务器中的 LIMIT:http://www.w3schools.com/sql/sql_top.asp

正如下面所指出的,TOP 并不是真正的等价物。事实上,您需要使用 OFFSET 和 FETCH 来精确匹配 LIMIT 行为:https://msdn.microsoft.com/en-us/library/ms188385.aspx

看看这些帖子。从 MySQL 模拟 LIMIT 有点棘手。

LIMIT 10..20 in SQL Server

How to implement LIMIT with Microsoft SQL Server?

来自 SQL 服务器 2012 OFFSET and FETCH

SELECT * FROM Table ORDER BY FirstName OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

应该相当于LIMIT 10, 5.