一尘不染

``极限''极限?

sql

我正在使用MySQL存储财务资料,并使用数据来构建每个帐户的所有交易记录等。出于性能方面的考虑-为了防止用户被庞大的表格所淹没-我对结果进行了分页。

现在,作为注册的一部分,我将显示该帐户的余额。因此,如果我每页显示20个事务,而我显示第二页,则使用如下数据:

  • 事务0-19: 忽略它们-它们比正在查看的页面要新。
  • 交易20-39: 从中选择所有内容-它们会显示出来。
  • 事务40-??: 将这些金额相加,以便使余额保持准确。

那是最后一个让我很烦。这很容易选择 使用LIMIT第40周的交易,但有一些类似的一切 ,但 前40?诸如“ LIMIT -40”之类的东西?

我知道我可以用一个COUNT和一点数学就能做到这一点,但是实际的查询有点丑陋(多个JOIN和GROUP
BY),所以我宁愿尽可能少地发布它。这似乎足够有用,可以包含在SQL中-我只是不知道。还有其他人吗?


阅读 143

收藏
2021-03-08

共1个答案

一尘不染

该文档说:

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

  • 在准备好的语句中,LIMIT可以使用?指定参数。占位符标记。

  • 在存储程序中,LIMIT可以使用整数值的例程参数或从MySQL 5.5.6开始的局部变量来指定参数。

有两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量是0(不是1):

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

要检索从某个偏移量到结果集末尾的所有行,可以为第二个参数使用较大的数字。 该语句检索从第96行到最后一行的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

下次,请使用该文档作为您的第一个停靠港。

2021-03-08