如何仅使用(My)SQL使限制偏移动态化

Joh*_*ica 6 mysql sql limit

此代码不起作用

select pagenr into @offset from pages where id = 3;
select * from table1 limit @offset*10, 10;
Run Code Online (Sandbox Code Playgroud)

我需要使用什么SQLcode才能使这种代码
使用SQL 工作!

注意

SET SQL_SELECT_LIMIT = @count 
Run Code Online (Sandbox Code Playgroud)

不起作用,因为我主要关注的是偏移,而不是限制.

Kar*_*ath 5

来自 MySQL 5.5 规范:

LIMIT子句可用于限制语句返回的行数SELECTLIMIT接受一个或两个数字参数,它们必须都是非负整数常量,但以下例外:

  • 在准备好的语句中,LIMIT可以使用占位符标记来指定参数?
  • 从 MySQL 5.5.6开始,在存储的程序中,LIMIT可以使用整数值例程参数或局部变量来指定参数。

因此,在存储过程中,以下内容将起作用:

DECLARE offset bigint
SELECT pagenr * 10 INTO offset FROM pages where id = 3;
SELECT * FROM table1 LIMIT offset, 10;
Run Code Online (Sandbox Code Playgroud)

否则,您需要预先计算该值并通过查询传递它。您应该已经知道页面大小和页码,因此这应该不难。