在 MySQL 中不使用 LIMIT 和 OFFSET 的存储过程中的分页。

Kau*_*eta 1 mysql pagination

我必须创建一个存储过程来使用 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)

Vis*_*iri 5

@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)