文档文档

SELECT 语句

使用 SELECT 语句从特定的测量或多个测量中查询数据。

语法

SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]

注意:SELECT 语句需要 SELECT 子句和 FROM 子句。

SELECT 子句

SELECT 子句支持多种格式来指定数据

  • SELECT * - 返回所有字段标签
  • SELECT "<field_key>" - 返回特定字段。
  • SELECT "<field_key>","<field_key>" - 返回多个字段。
  • SELECT "<field_key>","<tag_key>" - 返回特定字段和标签。当 SELECT 子句包含标签时,必须至少指定一个字段。
  • SELECT "<field_key>"::field,"<tag_key>"::tag - 返回特定字段和标签。::[field | tag] 语法指定标识符的类型。使用此语法来区分具有相同名称的字段键和标签键。

其他支持的功能包括

注意:SELECT 语句不能同时包含聚合函数非聚合函数、字段键或标签键。有关更多信息,请参阅关于混合使用聚合查询和非聚合查询的错误

FROM 子句

SELECT 子句指定要查询的测量。此子句支持多种格式来指定测量

  • FROM <measurement_name> - 从测量中返回数据。
  • FROM <measurement_name>,<measurement_name> - 从多个测量中返回数据。
  • FROM <database_name>.<retention_policy_name>.<measurement_name> - 从完全限定的测量中返回数据。
  • FROM <database_name>..<measurement_name> - 从测量中返回数据。

引号

如果标识符包含 [A-z,0-9,_] 以外的字符,以数字开头,或者是InfluxQL 关键字必须使用双引号引起来。虽然并非总是必要,但我们建议您使用双引号引起来标识符。

注意:InfluxQL 引号准则与行协议引号准则不同。请查看查询中单引号和双引号的规则

示例

从测量中选择所有字段和标签

从测量中选择特定标签和字段

从测量中选择特定标签和字段并提供其标识符类型

从测量中选择所有字段

从测量中选择特定字段并执行基本算术运算

从多个测量中选择所有数据

从特定数据库中的测量中选择所有数据

SELECT 语句的常见问题

在 SELECT 语句中选择标签键

查询需要在 SELECT 子句中至少包含一个字段键才能返回数据。如果 SELECT 子句仅包含单个标签键或多个标签键,则查询返回空响应。

示例

以下查询不返回任何数据,因为它在 SELECT 子句中指定了单个标签键 (location)

SELECT "location" FROM "h2o_feet"
> No results

要返回与 location 标签键关联的任何数据,查询的 SELECT 子句必须至少包含一个字段键 (water_level)

SELECT "water_level","location" FROM "h2o_feet"

输出

名称: h2o_feet

timewater_levellocation
2019-08-17T00:00:00Z8.1200000000coyote_creek
2019-08-17T00:00:00Z2.0640000000santa_monica
2019-08-17T 00:06:00Z8.0050000000coyote_creek
2019-08-17T00:06:00Z2.1160000000santa_monica
2019-08-17T00:12:00Z7.8870000000coyote_creek
2019-08-17T00:12:00Z2.0280000000santa_monica
2019-08-17T00:18:00Z7.7620000000coyote_creek
2019-08-17T00:18:00Z2.1260000000santa_monica

正则表达式

InfluxQL 支持在指定以下内容时使用正则表达式

语法

SELECT /<regular_expression_field_key>/ FROM /<regular_expression_measurement>/ WHERE [<tag_key> <operator> /<regular_expression_tag_value>/ | <field_key> <operator> /<regular_expression_field_value>/] GROUP BY /<regular_expression_tag_key>/

有关更多信息,请参阅正则表达式

数据类型和类型转换操作

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

数据类型

字段值可以是浮点数、整数、字符串或布尔值。:: 语法允许用户在查询中指定字段的类型。

注意:通常,不需要在SELECT 子句中指定字段值类型。在大多数情况下,InfluxDB 会拒绝任何尝试将字段值写入到先前接受了不同类型字段值的字段的操作。

字段值类型可能会因分片组而异。在这些情况下,可能需要在 SELECT 子句中指定字段值类型。有关 InfluxDB 如何处理字段值类型差异的更多信息,请参阅常见问题解答文档。

语法

SELECT_clause <field_key>::<type> FROM_clause

type 可以是 floatintegerstringboolean。在大多数情况下,如果 field_key 未存储指定 type 的数据,则 InfluxDB 不返回任何数据。有关更多信息,请参阅类型转换操作

示例

SELECT "water_level"::float FROM "h2o_feet" LIMIT 4

输出

名称: h2o_feet

timewater_level
2019-08-17T00:00:00Z8.1200000000
2019-08-17T00:00:00Z2.0640000000
2019-08-17T00:06:00Z8.0050000000
2019-08-17T00:06:00Z2.1160000000

该查询返回 water_level 字段键的浮点数值。

类型转换操作

:: 语法允许用户在查询中执行基本类型转换操作。目前,InfluxDB 支持将字段值从整数转换为浮点数或从浮点数转换为整数。

语法

SELECT_clause <field_key>::<type> FROM_clause

type 可以是 floatinteger

如果查询尝试将整数或浮点数转换为字符串或布尔值,则 InfluxDB 不返回任何数据。

示例

将浮点数字段值转换为整数

将浮点数字段值转换为字符串(尚不支持此功能)

合并行为

InfluxQL 自动合并序列

示例

合并行为

多条语句

用分号 (;) 分隔查询中的多个 SELECT 语句。

示例

InfluxQL shell

SELECT MEAN("water_level") FROM "h2o_feet"; SELECT "water_level" FROM "h2o_feet" LIMIT 2

输出

名称: h2o_feet

timemean
1970-01-01T00:00:00Z4.4419314021

名称: h2o_feet

timewater_level
2019-08-17T00:00:00Z8.12
2015-08-18T00:00:00Z2.064

使用InfluxDB API

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "h2o_feet",
                    "columns": [
                        "time",
                        "mean"
                    ],
                    "values": [
                        [
                            "1970-01-01T00:00:00Z",
                            4.442107025822522
                        ]
                    ]
                }
            ]
        },
        {
            "statement_id": 1,
            "series": [
                {
                    "name": "h2o_feet",
                    "columns": [
                        "time",
                        "water_level"
                    ],
                    "values": [
                        [
                            "2015-08-18T00:00:00Z",
                            8.12
                        ],
                        [
                            "2015-08-18T00:00:00Z",
                            2.064
                        ]
                    ]
                }
            ]
        }
    ]
}

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看