“逆”极限?

Xav*_*olt 3 mysql sql pagination limit

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

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

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

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

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

Lig*_*ica 5

该文件说:

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

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

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

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

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM tbl LIMIT 95,18446744073709551615;
Run Code Online (Sandbox Code Playgroud)

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