文档文档

SELECT 语句

使用 SELECT 语句从一个或多个 measurement 中查询数据。SELECT 语句必须包含 SELECT 子句FROM 子句

语法

SELECT field_expression[, ..., field_expression_n[, tag_expression[, ..., tag_expression_n]]] FROM measurement_expression[, ..., measurement_expression_n]

SELECT 子句

SELECT 子句支持多种格式来标识要查询的数据。它要求一个或多个字段表达式,以及可选的标签表达式

  • field_expression:用于标识要在查询结果中返回的一个或多个字段的表达式。可以是 字段键、常量、正则表达式通配符 (*)函数表达式,以及任何算术运算符的组合。
  • tag_expression:用于标识要在查询结果中返回的一个或多个标签的表达式。可以是 标签键或常量。

SELECT 子句行为

  • SELECT field_key - 返回一个特定字段。
  • SELECT field_key1, field_key2 - 返回两个特定字段。
  • SELECT field_key, tag_key - 返回一个特定字段和一个标签。
  • SELECT * - 返回所有 字段标签请参阅 通配符表达式
  • SELECT /^[t]/ - 返回所有字段和标签,其键匹配正则表达式。至少需要一个字段键匹配正则表达式。如果没有任何字段键匹配正则表达式,则不返回任何结果。

FROM 子句

FROM 子句指定要查询的 measurement子查询。它要求一个或多个由逗号分隔的 measurement 表达式子查询

measurement_expression

measurement 表达式用于标识要查询的 measurement。它可以是 measurement 名称、完全限定的 measurement、常量或 正则表达式

  • Measurement 名称:仅使用 measurement 名称时,InfluxQL 会假设查询请求中指定的数据库的默认保留策略。

    FROM measurement
  • Fully-qualified measurement:完全限定的 measurement 包括数据库名称、保留策略名称和 measurement 名称,每个之间用句点 (.) 分隔。如果未指定保留策略,InfluxQL 将使用指定数据库的默认保留策略。

FROM database.retention_policy.measurement

-- Fully-qualified measurement with default retention policy
FROM database..measurement

InfluxQL 保留策略

在 InfluxDB 3 Core 中,保留策略不像 InfluxDB 1.x 中那样是数据模型的一部分。每个 InfluxDB 3 Core 数据库都有一个保留期,它定义了数据库中要保留数据的最大年龄。要在 InfluxQL 查询中使用完全限定的 measurement,请在 创建数据库时使用以下命名约定:

database_name/retention_policy

Subquery

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

有关更多信息,请参阅 InfluxQL 子查询

SELECT 语句的注意事项

必须至少查询一个字段

查询要求 SELECT 子句中至少包含一个 字段键才能返回数据。如果 SELECT 子句仅包含 标签键,则查询将返回空结果。当在 SELECT 子句中使用正则表达式时,如果正则表达式仅匹配标签键而未匹配任何字段键,则查询将返回空结果。

要返回与标签键关联的数据,请在 SELECT 子句中包含至少一个字段键。

Wildcard expressions

当在 SELECT 子句中使用通配符表达式 (*) 时,查询将返回所有标签和字段。如果对通配符表达式应用了 函数,查询将返回所有应用了函数的字段,但除非在 SELECT 子句中包含标签,否则不会返回标签。

不能同时包含聚合和非聚合字段表达式

SELECT 语句不能同时包含聚合字段表达式(使用 聚合选择器函数的表达式)非聚合字段表达式。例如,在以下查询中,对一个字段应用了聚合函数,但对另一个字段没有。

SELECT mean(temp), hum FROM home

此查询将返回错误。有关更多信息,请参阅 关于混合聚合和非聚合查询的错误

数据类型和类型转换操作

SELECT 子句支持使用 :: 语法指定 字段的类型和基本类型转换操作。

SELECT field_expression::type FROM measurement_expression

:: 语法允许用户在查询中执行基本类型转换操作。目前,InfluxQL 支持将数值型 字段值转换为其他数值类型。转换为标识符类型会作为结果的过滤器,并仅返回具有该特定标识符类型的列以及 time 列。

Numeric types
  • float
  • integer
  • unsigned
Non-numeric types
  • string
  • boolean
Identifier types
  • 字段
  • tag

如果查询尝试将数值转换为非数值类型或反之,InfluxQL 将不返回任何数据。

将浮点数值转换为整数或无符号整数时,浮点数值将在小数点处截断。不进行四舍五入。

SELECT 语句示例

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

从 measurement 中选择所有字段和标签

从 measurement 中选择特定的标签和字段

从 measurement 中选择所有字段

从 measurement 中选择一个字段并执行基本算术运算

从多个 measurement 中选择所有数据

从完全限定的 measurement (带默认保留策略) 中选择所有数据

类型转换示例

将整数字段转换为浮点数

将浮点数字段转换为整数

将浮点数字段转换为无符号整数


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2