OFFSET 和 SOFFSET 子句
使用 OFFSET
和 SOFFSET
对返回的数据点和序列进行分页。
OFFSET
子句
OFFSET <N>
对查询结果中的 N
个数据点进行分页。
语法
SELECT_clause FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT_clause OFFSET <N> [SLIMIT_clause]
N
指定要分页的数据点数量。OFFSET
子句需要LIMIT
子句。
注意: 如果 WHERE 子句
包含时间范围,并且 OFFSET 子句
将导致 InfluxDB 返回时间戳在该时间范围之外的数据点,则 InfluxDB 不会返回任何结果。
示例
对数据点进行分页
SELECT "water_level","location" FROM "h2o_feet" LIMIT 3 OFFSET 3
输出
time | water_level | location |
---|
2019-08-17T00:06:00Z | 2.1160000000 | santa_monica |
2019-08-17T00:12:00Z | 7.8870000000 | coyote_creek |
2019-08-17T00:12:00Z | 2.0280000000 | santa_monica |
该查询返回 h2o_feet
测量中的第四、第五和第六个数据点。如果查询不包含 OFFSET 3
,它将返回该测量中的第一、第二和第三个数据点。
对数据点进行分页并包含多个子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:42:00Z' GROUP BY *,time(12m) ORDER BY time DESC LIMIT 2 OFFSET 2 SLIMIT 1
输出
time | mean |
---|
2019-08-18T00:12:00Z | 8.2725000000 |
2019-08-18T00:00:00Z | 8.4615000000 |
在此示例中:
如果没有 OFFSET 2
,查询将返回查询结果中的前两个平均值:
输出
time | mean |
---|
2019-08-18T00:36:00Z | 7.8330000000 |
2019-08-18T00:24:00Z | 8.0710000000 |
SOFFSET
子句
SOFFSET <N>
对查询结果中的 N
个序列进行分页。
语法
SELECT_clause FROM_clause [WHERE_clause] GROUP BY *[,time(time_interval)] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] SLIMIT_clause SOFFSET <N>
N
指定要分页的序列数。SOFFSET
子句需要 [SLIMIT
子句](//influxdb/v2/query-data/influxql/explore-data/limit-and-slimit/)。在没有 SLIMIT
子句的情况下使用 SOFFSET
子句可能会导致不一致的查询结果。SLIMIT
查询必须包含 GROUP BY *
。
注意: 如果 SOFFSET
子句分页超过序列总数,则 InfluxDB 不会返回任何结果。
示例
对序列进行分页
对序列进行分页
SELECT "water_level" FROM "h2o_feet" GROUP BY * SLIMIT 1 SOFFSET 1
输出
time | water_level |
---|
2019-08-17T00:00:00Z | 2.0640000000 |
2019-08-17T00:06:00Z | 2.1160000000 |
2019-08-17T00:12:00Z | 2.0280000000 |
2019-08-17T00:18:00Z | 2.1260000000 |
2019-08-17T00:24:00Z | 2.0410000000 |
2019-08-17T00:30:00Z | 2.0510000000 |
2019-08-17T00:36:00Z | 2.0670000000 |
2019-08-17T00:42:00Z | 2.0570000000 |
上面的结果是部分结果,因为数据集非常大。该查询返回与 h2o_feet
测量和 location = santa_monica
标签关联的序列的数据。如果没有 SOFFSET 1
,查询将返回与 h2o_feet
测量和 location = coyote_creek
标签关联的序列的数据。
对数据点进行分页并包含多个子句
对序列进行分页并包含所有子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:42:00Z' GROUP BY *,time(12m) ORDER BY time DESC LIMIT 2 OFFSET 2 SLIMIT 1 SOFFSET 1
输出
time | mean |
---|
2019-08-18T00:12:00Z | 2.3360000000 |
2019-08-18T00:00:00Z | 2.3655000000 |
在此示例中:
如果没有 SOFFSET 1
,查询将返回不同序列的结果:
输出
time | mean |
---|
2019-08-18T00:12:00Z | 8.2725000000 |
2019-08-18T00:00:00Z | 8.4615000000 |
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要获得支持,请使用以下资源:
拥有年度或支持合同的客户可以联系 InfluxData 支持。