InfluxQL 子查询
InfluxDB 3核心正在进行公开测试
InfluxDB 3 Core 正在进行公开 alpha 测试,并可供测试和反馈,但不适合用于生产环境。产品和本文件都是进行中的工作。我们欢迎并鼓励您分享您对 alpha 版本的体验,并邀请您加入我们的公共频道以获取更新和分享反馈。
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 语句
InfluxQL 不支持每个子查询的多个
SELECT 语句:
SELECT_clause FROM (SELECT_statement; SELECT_statement) [...]
然而,InfluxQL确实支持每个外部查询的多个嵌套子查询:
SELECT_clause FROM ( SELECT_clause FROM ( SELECT_statement ) [...] ) [...]
------------------ ----------------
Subquery 1 Subquery 2