一尘不染

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

mysql

此代码不起作用

select pagenr into @offset from pages where id = 3;
select * from table1 limit @offset*10, 10;

我需要使用哪种SQLcode才能使这种代码 仅*
使用SQL 即可工作!
*

注意

SET SQL_SELECT_LIMIT = @count

不起作用,因为我主要关注偏移量,而不是限制本身。


阅读 284

收藏
2020-05-17

共1个答案

一尘不染

根据MySQL 5.5规范:

LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这些参数都必须是非负整数常量,但以下情况除外:

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

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

DECLARE offset bigint
SELECT pagenr * 10 INTO offset FROM pages where id = 3;
SELECT * FROM table1 LIMIT offset, 10;

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

2020-05-17