文档文档

子查询

子查询是在另一个查询的 FROM 子句中嵌套的查询。使用子查询将查询应用为封闭查询中的条件。子查询提供类似于嵌套函数和 SQL HAVING 子句 的功能。

注意: InfluxQL 不支持 HAVING 子句。

语法

SELECT_clause FROM ( SELECT_statement ) [...]

InfluxDB 首先执行子查询,然后执行主查询。

主查询包围子查询,并且至少需要 SELECT 子句FROM 子句。主查询支持 InfluxQL 2.x 文档中列出的所有子句。

子查询出现在主查询的 FROM 子句中,并且需要用括号括起来。子查询也支持 InfluxQL 2.x 文档中列出的所有子句。

InfluxQL 支持每个主查询的多个嵌套子查询。多个子查询的示例语法

SELECT_clause FROM ( SELECT_clause FROM ( SELECT_statement ) [...] ) [...]

注意: #### 提高时间绑定子查询的性能 为了提高具有时间绑定子查询的 InfluxQL 查询的性能,请将 WHERE time 子句应用于外部查询,而不是内部查询。例如,以下查询返回相同的结果,但外部查询上具有时间限制的查询比内部查询上具有时间限制的查询性能更高

SELECT inner_value AS value FROM (SELECT raw_value as inner_value)
WHERE time >= '2022-07-19T21:00:00Z'
AND time <= '2022-07-20T22:00:00Z'
内部查询上的时间限制
SELECT inner_value AS value FROM (
  SELECT raw_value as inner_value
  WHERE time >= '2022-07-19T21:00:00Z'
  AND time <= '2022-07-20T22:00:00Z'
)

示例

计算几个 MAX() 值的 SUM()

计算两个字段之间差值的 MEAN()

计算几个 MEAN() 值并对这些平均值设置条件

计算几个 DERIVATIVE() 值的 SUM()

子查询的常见问题

子查询中的多个语句

InfluxQL 支持每个主查询的多个嵌套子查询

SELECT_clause FROM ( SELECT_clause FROM ( SELECT_statement ) [...] ) [...]
                     ------------------   ----------------
                         Subquery 1          Subquery 2

InfluxQL 不支持每个子查询的多个 SELECT 语句

SELECT_clause FROM (SELECT_statement; SELECT_statement) [...]

如果子查询包含多个 SELECT 语句,系统将返回解析错误。


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩功能,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看