选择语句
使用 SELECT 语句从一个或多个 度量 中查询数据。 SELECT 语句 需要 一个 SELECT 子句 和一个 FROM 子句。
语法
SELECT field_expression[, ..., field_expression_n[, tag_expression[, ..., tag_expression_n]]] FROM measurement_expression[, ..., measurement_expression_n]
选择子句
选项 SELECT 子句支持多种格式来识别要查询的数据。它需要一个或多个 字段表达式 和可选的 标签表达式。
- field_expression: 表达式,用于识别要在查询结果中返回的一个或多个字段。可以是field key,常量,regular expression,wildcard (
*),或function expression以及任何算术运算符的组合。 - tag_expression: 用于识别在查询结果中返回一个或多个标签的表达式。可以是一个 tag key 或常量。
选择子句行为
SELECT field_key- 返回特定字段。SELECT field_key1, field_key2- 返回两个特定字段。SELECT field_key, tag_key- 返回特定的字段和标签。SELECT *- 返回所有 字段 和 标签。 参见 通配符表达式。SELECT /^[t]/- 返回所有 fields 和 tags,其键匹配正则表达式。至少一个字段键必须匹配正则表达式。如果没有字段键匹配正则表达式,则不返回结果。
FROM 子句
FROM 子句指定要查询的 度量或 子查询。 它需要一个或多个用逗号分隔的 度量表达式或 子查询。
测量表达式
测量表达式标识要查询的测量。 它可以是测量名称、完全限定的测量、常量或正则表达式。
测量名称: 当仅使用测量名称时,InfluxQL 假定查询请求中指定的数据库的默认保留策略。
FROM measurement完全限定度量: 一个完全限定的度量包含数据库名称、保留策略名称和度量名称,每个名称之间用一个点 (
.) 分隔。如果未指定保留策略,InfluxQL将使用指定数据库的默认保留策略。
FROM database.retention_policy.measurement
-- Fully-qualified measurement with default retention policy
FROM database..measurement
InfluxQL 保留策略
在 InfluxDB Cloud Serverless 中,保留策略 并不像 InfluxDB 1.x 中那样是数据模型的一部分。每个 InfluxDB Cloud Serverless 数据库都有一个 保留期限,定义了在数据库中保留数据的最大年龄。要在 InfluxQL 查询中使用完全限定的度量,请在 创建数据库 时使用以下命名约定:
database_name/retention_policy
子查询
InfluxQL 子查询是在 InfluxQL 查询的 FROM 子句中嵌套的查询。外部查询查询由内部查询(子查询)返回的结果。
有关更多信息,请参见 InfluxQL 子查询。
显著的SELECT语句行为
必须至少查询一个字段
查询至少需要一个 字段键 在 SELECT 子句中以返回数据。
如果 SELECT 子句仅包含 标签键,则查询返回空结果。
在 SELECT 子句中使用正则表达式时,如果正则表达式仅匹配标签键而没有字段键,则查询返回空结果。
要返回与标签键相关联的数据,至少在SELECT子句中包含一个字段键。
通配符表达式
当在SELECT子句中使用通配符表达式 (*) 时,查询返回所有标签和字段。
如果对通配符表达式应用了函数,则查询返回应用了该函数的所有字段,但除非它们包含在SELECT子句中,否则不返回标签。
不能同时包含聚合和非聚合字段表达式
该 SELECT 语句不能同时包含一个聚合字段表达式(使用了一个 aggregate 或 selector 函数)和一个非聚合字段表达式。例如,在以下查询中,一个聚合函数应用于一个字段,但不是另一个:
SELECT mean(temp), hum FROM home
此查询返回一个错误。 有关更多信息,请参见 关于混合聚合和非聚合查询的错误。
数据类型和类型转换操作
该 SELECT 子句 支持使用 :: 语法指定
字段 的类型和基本的
类型转换操作。
SELECT field_expression::type FROM measurement_expression
这个 :: 语法允许用户在查询中执行基本的类型转换操作。 目前,InfluxQL 支持将 数值 字段值 转换为其他数值类型。 转换为 标识符类型 作为结果的过滤器,仅返回该特定标识符类型的列以及 time 列。
数字类型
floatintegerunsigned
非数字类型
stringboolean
标识符类型
fieldtag
如果查询尝试将数值型值转换为非数值型类型,反之亦然,InfluxQL将不返回数据。
将浮点值转换为整数或无符号整数时,浮点值在小数点处被截断。没有进行四舍五入。
SELECT 语句示例
下面的示例使用以下样本数据集: