如何使用LIMIT查询后是否有更多数据?

时间:2018-02-23 22:07:42

标签: pagination time-series influxdb

我在InfluxQL查询中使用LIMITOFFSET来处理分页。

例如,在有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

假设我使用LIMITOFFSET逐个读取行:

> 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生成“下一页令牌”。我想避免给用户一个只返回空行集的标记。

1 个答案:

答案 0 :(得分:2)

为避免额外的查询,您始终可以使用limit作为(limit + 1)进行数据库查询。

Ex:如果实际限制为5,则将限制设置为6,仅在结果集有6行时才给出下一页标记。另外,仅将5行数据返回给客户端。