此代码不起作用
select pagenr into @offset from pages where id = 3; select * from table1 limit @offset*10, 10;
我需要使用哪种SQLcode才能使这种代码 仅* 使用SQL 即可工作! *
注意
SET SQL_SELECT_LIMIT = @count
不起作用,因为我主要关注偏移量,而不是限制本身。
根据MySQL 5.5规范:
该LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这些参数都必须是非负整数常量,但以下情况除外: 在准备好的语句中,LIMIT可以使用? 占位符标记指定参数。 在存储的程序中,LIMIT可以使用整数值的例程参数或从MySQL 5.5.6开始的局部变量来指定参数。
该LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这些参数都必须是非负整数常量,但以下情况除外:
LIMIT
SELECT
?
因此,在存储过程中,以下方法将起作用:
DECLARE offset bigint SELECT pagenr * 10 INTO offset FROM pages where id = 3; SELECT * FROM table1 LIMIT offset, 10;
否则,您将需要预先计算值并通过查询将其传递。您应该已经知道页面的大小和页码,所以这并不难。