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

How can I tell if there is more data after a query with LIMIT?

我在 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 生成 "next page token"。我想避免给用户一个只会 return 一个空行集的令牌。

为避免额外查询,您始终可以使用 limit 作为 (limit + 1).

进行数据库查询

例:如果实际限制为5,则设置限制为6,并且仅当结果集有6行时才给出下一页标记。另外,return 只向客户端发送 5 行的数据。