我必须创建一个存储过程来使用 MySQL 中的 LIMIT 获取分页数据。它在我的本地数据库中运行良好,但在服务器上不起作用。所以我尝试在 google 中搜索并获得解决方案“升级服务器上的 phpmyadmin 版本”,但这是不可能的。因此,在没有 LIMIT 或 OFFSET 的情况下创建分页的任何替代方法。?
在我尝试过的代码下方。
CREATE DEFINER=`root`@`localhost` PROCEDURE `LazyLoadScope`(IN ClientId INT,IN StartIndex INT,IN Count INT)
BEGIN
DECLARE LowerBound INT;
DECLARE UpperBound INT;
DECLARE rownum INT;
SET LowerBound = ((StartIndex - 1) * Count) + 1;
SET UpperBound = ((StartIndex - 1) * Count) + Count;
SELECT scopeid,scopename,clientid,scope,createddate,ViewDate,IsLocked
FROM scopemaster as sm inner join clientmaster cm on cm.clientid=sm.clientid
where cm.userid=ClientId order by sm.ViewDate desc LIMIT LowerBound,UpperBound ;
END
Run Code Online (Sandbox Code Playgroud)
@kaushik 请尝试以下代码。
CREATE DEFINER=`root`@`localhost` PROCEDURE `LazyLoadScope`(IN ClientId INT,IN StartIndex INT,IN Count INT)
BEGIN
DECLARE LowerBound INT;
DECLARE UpperBound INT;
DECLARE rownum INT;
SET LowerBound = ((StartIndex - 1) * Count) + 1;
SET UpperBound = ((StartIndex - 1) * Count) + Count;
SELECT scopeid,scopename,clientid,scope,createddate,ViewDate,IsLocked
from (SELECT *, @rownum := @rownum + 1 AS rank
from (SELECT sm.scopeid,sm.scopename,sm.clientid,sm.scope,sm.createddate,sm.ViewDate,sm.Is Locked
FROM scopemaster as sm
inner join clientmaster cm on cm.clientid=sm.clientid
where cm.userid=ClientId order by sm.ViewDate desc) d, (SELECT @rownum := 0) r ) m
WHERE rank >= LowerBound and rank <= UpperBound;
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5353 次 |
| 最近记录: |