[英]LIMIT command SQL Server
This is my PHP code: 这是我的PHP代码:
require_once ('ConfigSQL.php');
$per_page = 10;
if(isset($_GET['page'])) {
$page = ($_GET['page'] - 1);
}
else {
$page = 0;
}
$QueryCharacter = mssql_query ("
SELECT Character.AccountID, Character.Name, Character.CtlCode,
AccountCharacter.Number, AccountCharacter.ID,
memb___id, memb_name, memb__pwd2, mail_addr
FROM Character, AccountCharacter, MEMB_INFO
WHERE Character.AccountID=AccountCharacter.ID AND
AccountID=memb___id AND AccountCharacter.ID=memb___id
LIMIT {$page},{$per_page}
");
$rows = mssql_fetch_row($QueryCharacter);
$pages = $rows / $per_page;
$pages = $pages ? ((int)$pages == $pages) : ((int)$pages + 1);
And that is the error I get: 那就是我得到的错误:
Warning: mssql_query() [function.mssql-query]: message: Line 2: Incorrect syntax near ','. 警告:mssql_query()[function.mssql-query]:消息:第2行:','附近的语法不正确。 (severity 15) in C:\\xampp\\htdocs\\Pages\\EditCharacter.php on line 19 (严重性15)在C:\\ xampp \\ htdocs \\ Pages \\ EditCharacter.php中的第19行
Warning: mssql_query() [function.mssql-query]: Query failed in C:\\xampp\\htdocs\\Pages\\EditCharacter.php on line 19 警告:mssql_query()[function.mssql-query]:在第19行的C:\\ xampp \\ htdocs \\ Pages \\ EditCharacter.php中查询失败
Warning: mssql_fetch_row(): supplied argument is not a valid MS SQL-result resource in C:\\xampp\\htdocs\\Pages\\EditCharacter.php on line 21 警告:mssql_fetch_row():在第21行的C:\\ xampp \\ htdocs \\ Pages \\ EditCharacter.php中,提供的参数不是有效的MS SQL结果资源
I know that the problem is the 'LIMIT' in my SQL query. 我知道问题出在我的SQL查询中。
How should the query be? 查询应该如何?
Try changing your query into this: 尝试将查询更改为此:
WITH paging AS (
SELECT
,Character.AccountID
,Character.Name
,Character.CtlCode
,AccountCharacter.Number
,AccountCharacter.ID
,memb___id
,memb_name
,memb__pwd2
,mail_addr
,ROW_NUMBER() OVER (ORDER BY Character.AccountID) AS RowNr
FROM
Character,
AccountCharacter,
MEMB_INFO
WHERE
Character.AccountID = AccountCharacter.ID
AND AccountID=memb___id
AND AccountCharacter.ID=memb___id
)
SELECT TOP ({$per_page}) *
FROM paging
WHERE RowNr > {$page} * {$per_page}
ORDER BY RowNr
Note that page 0 is the first page, 1 is the second, etc. 请注意,页面0是第一页,页面1是第二页,依此类推。
This uses Common Table Expressions introduced in MSSQL 2005, for earlier versions, something like this should probably work (source Efficient Paging (Limit) Query in SQLServer 2000? ): 对于早期版本,它使用MSSQL 2005中引入的Common Table Expressions(通用表表达式),类似的东西应该可以工作( SQLServer 2000中的源高效分页(限制)查询? ):
DECLARE @Sort int
SET ROWCOUNT {$page} * {$per_page}
SELECT @Sort = AccountID FROM Character ORDER BY AccountID
SET ROWCOUNT {$per_page}
SELECT
,Character.AccountID
,Character.Name
,Character.CtlCode
,AccountCharacter.Number
,AccountCharacter.ID
,memb___id
,memb_name
,memb__pwd2
,mail_addr
,ROW_NUMBER() OVER (ORDER BY Character.AccountID) AS RowNr
FROM
Character,
AccountCharacter,
MEMB_INFO
WHERE
Character.AccountID > @Sort
AND Character.AccountID = AccountCharacter.ID
AND AccountID=memb___id
AND AccountCharacter.ID=memb___id
ORDER BY
Character.AccountID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.