当前位置: 首页 > 面试题库 >

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

苏涛
2023-03-14
问题内容

此代码不起作用

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开始的局部变量来指定参数。

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

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

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



 类似资料:
  • 问题内容: 是否可以跳过X个第一行,并在一个查询中选择所有其他行?像那样: 它将选择:pqr,stu,vwx,yz 我尝试使用LIMIT和OFFSET完成此操作,但是问题是表是动态的,而且我不知道应该输入哪个LIMIT(我不知道表中有多少行)。 问题答案: 如果只需要最后N行,请尝试以下操作: 这会根据的顺序为您提供最后几条记录。 您可以使用自动递增的主键(希望有一个主键)来确定行的顺序(如果无法

  • 我使用的是camel kafka组件,我不清楚在提交补偿时引擎盖下发生了什么。如下所示,我正在聚合记录,我认为对于我的用例来说,只有在记录保存到SFTP后提交偏移量才有意义。 是否可以手动控制何时可以执行提交?

  • 问题内容: 我有一张表,其中有一列,有330万个条目。我想遍历表,每200个条目执行一次操作。我有以下代码: 最初,此方法运行良好(生成tmp表的时间约为0.15秒),但偶尔会变慢,例如,大约有30万张票,它开始花费11-12秒的时间来生成此tmp表,然后大约有40万张。基本上看来是不可靠的。 我将在其他查询中使用这些ID,因此我认为在tmp表中放置ID的最佳位置。有没有更好的方法来遍历这样的结果

  • 问题内容: 我对的能力了解得越多,我就越惊讶于它的作用。这是根据我对问题的回答(使用反射更改静态最终用于单元测试)改编而成的。 你可以做真正令人发指的事情: 大概是API设计者意识到了可滥用性,但是必须承认它具有合法的用途来提供它。所以我的问题是: 真正合法的用途是什么? Java是否可以被设计为一开始就没有这种需求? 这种设计的负面后果(如果有)是什么? 你只能限制合法使用吗? 只有通过吗? 它

  • 如何在recyclerview中滚动到具有偏移量的特定位置? 我用过 我也曾经 此外,我使用了skrolltopoplace 但似乎没有一个适合我。 如果有人知道这件事,你能帮我吗 使现代化 功能,其中我设置适配器的我的回收站

  • 我已经构建了一个web API,它接收GET请求,并根据传入的规范处理图像,如图像Url、要在其上绘制的文本、质量、大小等。 我有几个关于使用应用程序洞察的问题,它似乎是构建在我的Visual Studio IDE和Azure中的。这个问题是在我研究使用分析的正确形式时引起的: https://docs.microsoft.com/en-us/Azure/Application-Insights/