本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/)
LIMIT和SLIMIT分别用于限制InfluxDB中每次查询时返回的points或series的数目。
一、LIMIT子句
LIMIT
语法:
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT <N>
LIMIT示例sql
二、SLIMIT子句
SLIMIT
有一个持续的问题是,需要SLIMIT查询中包含group by*。请注意,SLIMIT子句必须按上述语法中列出的顺序出现。
SLIMIT示例sql
示例1
上面sql查询h2o_feet表中1个series的所有point的water_level。- 示例2
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) SLIMIT 1
查询结果:
三、LIMIT and SLIMIT
当LIMIT
语法:
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] LIMIT <N1> SLIMIT <N2>
- N1指定了从measurement中查询的points的数量。
- N2指定了从measurement中查询的series的数量。
存在一个持续的问题是,在使用LIMIT和SLIMIT来进行查询时,sql中必须包含group by*。注意,LIMIT和SLIMIT子句必须按上述语法中列出的顺序出现。
LIMIT和SLIMIT示例sql
示例1
- 示例2
Sql
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) LIMIT 3 SLIMIT 2
查询结果:
由查询结果可知,查询返回2个series,每个series返回3个points。为了证明LIMIT 3 SLIMIT 2指的是返回前2个series中,每个series的前3个points。我们执行下面的sql,看每个series有多少个point
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) SLIMIT 2
查询结果:
可见每个series有4个point。