如何判断在使用 LIMIT 查询后是否有更多数据?
How can I tell if there is more data after a query with LIMIT?
我在 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 生成 "next page token"。我想避免给用户一个只会 return 一个空行集的令牌。
为避免额外查询,您始终可以使用 limit 作为 (limit + 1).
进行数据库查询
例:如果实际限制为5,则设置限制为6,并且仅当结果集有6行时才给出下一页标记。另外,return 只向客户端发送 5 行的数据。
我在 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 生成 "next page token"。我想避免给用户一个只会 return 一个空行集的令牌。
为避免额外查询,您始终可以使用 limit 作为 (limit + 1).
进行数据库查询例:如果实际限制为5,则设置限制为6,并且仅当结果集有6行时才给出下一页标记。另外,return 只向客户端发送 5 行的数据。