文档说明

InfluxQL 子查询

InfluxQL 子查询是在 InfluxQL 查询的 FROM 子句中嵌套的查询。外层查询查询内层查询(子查询)返回的结果。

InfluxQL 不支持 HAVING 子句,然而 InfluxQL 子查询提供了类似于 SQL HAVING 子句 的功能。

语法

SELECT_clause FROM ( SELECT_statement ) [...]

使用子查询时,InfluxQL 首先执行 内层查询,然后执行外层查询。

外层查询需要一个 SELECT 子句 和一个 FROM 子句。内层查询在外层查询的 FROM 子句中以括号的形式出现。

InfluxQL 支持多重嵌套子查询

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

示例

示例数据

以下示例使用以下示例数据集

对一个聚合结果集应用聚合函数

计算两个字段之间的平均差值

基于阈值过滤聚合值

对聚合值执行额外的聚合操作

显著的子查询行为

将时间范围应用于外部查询以提高性能

为了提高使用子查询和指定时间范围的 InfluxQL 查询的性能,将基于时间的谓词 WHERE 子句应用于外部查询而不是内部查询。例如——以下查询返回相同的结果,但在外部查询上使用基于时间的谓词的查询比在内部查询上使用基于时间的谓词的查询性能更好

外部查询的时间范围

SELECT
  inner_value AS value
FROM
  (
    SELECT
      raw_value as inner_value
  )
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T20:00:00Z'

内部查询的时间范围

SELECT
  inner_value AS value
FROM
  (
    SELECT
      raw_value as inner_value
    WHERE
      time >= '2022-07-19T08:00:00Z'
      AND time <= '2022-01-01T20:00:00Z'
  )

子查询中不能使用多个 SELECT 语句

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

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

然而,InfluxQL 支持每个外部查询多个嵌套子查询

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

这个页面有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 将进入维护模式。您可以继续按照当前的方式使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3 增强功能和 InfluxDB Clustered 现已普遍可用

新功能包括更快的查询性能和管理工具,推动了 InfluxDB v3 产品线的进步。InfluxDB Clustered 现已普遍可用。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个操作仪表板来监控您的 InfluxDB 集群的健康状况,InfluxDB Cloud Dedicated 中的单点登录 (SSO) 支持,以及用于令牌和数据库的新管理 API。

了解新的 v3 增强功能


InfluxDB Clustered 普遍可用

InfluxDB Clustered 现已普遍可用,为您在自行管理的堆栈中提供了 InfluxDB v3 的功能。

与我们谈谈 InfluxDB Clustered