我在InfluxQL查询中使用LIMIT
和OFFSET
来处理分页。
例如,在有3行的测量中。
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:00:00Z 1000
2018-02-23T18:30:00Z 1200
2018-02-23T19:00:00Z 990
假设我使用LIMIT
和OFFSET
逐个读取行:
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:00:00Z 1000
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1 OFFSET 1;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T18:30:00Z 1200
> SELECT *::field FROM i2QYtZBVSnuXjLhQhuAV6w LIMIT 1 OFFSET 2;
name: i2QYtZBVSnuXjLhQhuAV6w
time hello
---- -----
2018-02-23T19:00:00Z 990
有没有办法知道在没有执行额外查询之后没有更多数据?
编辑:我的用例是为面向用户的REST API生成“下一页令牌”。我想避免给用户一个只返回空行集的标记。
答案 0 :(得分:2)
为避免额外的查询,您始终可以使用limit作为(limit + 1)进行数据库查询。
Ex:如果实际限制为5,则将限制设置为6,仅在结果集有6行时才给出下一页标记。另外,仅将5行数据返回给客户端。