我正在尝试弄清楚如何将我在php mysql中创建的代码转换为php sqlsrv。
基本上,我在MySQL中使用了LIMIT来限制分页。但是,SQL Server不支持此功能,并且我真的很难像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$construct 1 ="从 $construct 的融合中选择 *"; 但我没有这样做,因为无论如何这是不可能的。
任何人都可以帮助我如何翻译或重写它?蒂亚。
看看这些帖子。从MySQL模拟LIMIT有点棘手。
限制 10..20 在 SQL Server 中
如何使用Microsoft SQL Server实现LIMIT?
从SQL server 2012开始,有OFFSET和FETCH。
SELECT * FROM Table ORDER BY FirstName OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;
它应该等同于限制 10、5。
TOP 相当于 SQL Server 中的 LIMIT:http://www.w3schools.com/sql/sql_top.asp
正如下面所指出的,TOP不是等效的现实。事实上,你需要使用 OFFSET 和 FETCH 来完全匹配 LIMIT 行为:https://msdn.microsoft.com/en-us/library/ms188385.aspx