文档文档

执行基本的 SQL 查询

InfluxDB SQL 实现由 Apache Arrow DataFusion 查询引擎驱动,该引擎提供类似于其他关系查询语言的 SQL 语法。

从 InfluxDB 查询数据的基本 SQL 查询最常包括以下子句

* 必需
  • * SELECT:指定要从度量中输出的字段、标签和计算,或使用通配符别名 (*) 选择度量中的所有字段和标签。
  • * FROM:指定要从中查询数据的度量。
  • WHERE:仅返回满足指定条件的数据,例如,在时间范围内、包含特定标签值或包含指定范围之外的字段值。
SELECT
  temp,
  hum,
  room
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T20:00:00Z'

结果集

如果至少有一行满足查询,InfluxDB Clustered 将在查询结果集中返回行数据。SQL 查询结果集包括查询的 SELECT 语句中列出的列。

基本查询示例

示例数据

以下示例使用开始写入数据指南中写入的示例数据。要运行示例查询并返回结果,请在运行示例查询之前将示例数据写入到您的 InfluxDB Clustered 数据库。

查询时间边界内的数据

  • 使用 SELECT 子句指定要返回的标签和字段。要返回所有标签和字段,请使用通配符别名 (*)。
  • FROM 子句中指定要查询的度量。
  • WHERE 子句中指定时间边界。包括将 time 列的值与时间戳进行比较的基于时间的谓词。使用 AND 逻辑运算符将多个谓词链接在一起。
SELECT *
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T12:00:00Z'

查询时间边界可以是相对的或绝对的。

使用相对时间边界查询

使用绝对时间边界查询

使用时区偏移查询数据

查询没有时间边界的数据

要查询没有时间边界的数据,请不要在 WHERE 子句中包含任何基于时间的谓词。

没有时间界限地查询数据可能会返回超出预期的数据量。查询可能需要很长时间才能完成,并且结果可能会被截断。

SELECT * FROM home

查询特定字段和标签

要查询特定字段,请将它们包含在 SELECT 子句中。如果查询多个字段或标签,请用逗号分隔每个字段或标签。如果字段或标签键包含特殊字符或空格或区分大小写,请用双引号将键括起来。

SELECT time, room, temp, hum FROM home

基于标签值查询字段

  • SELECT 子句中包含您要查询的字段和您要基于其设置条件的标签。
  • WHERE 子句中包含将标签标识符与字符串文字进行比较的谓词。使用逻辑运算符将多个谓词链接在一起并应用多个条件。
SELECT * FROM home WHERE room = 'Kitchen'

基于字段值查询点

  • SELECT 子句中,包含您要查询的字段。
  • WHERE 子句中,包含将字段标识符与值或表达式进行比较的谓词。使用逻辑运算符 (AND, OR) 将多个谓词链接在一起并应用多个条件。
SELECT co, time FROM home WHERE co >= 10 OR co <= -10

为查询的字段和标签创建别名

要为您查询的字段和标签创建别名或重命名,请在 SELECT 子句中的字段或标签标识符后传递字符串文字。您可以使用 AS 子句来定义别名,但这并不是必需的。以下查询在功能上是相同的

SELECT temp 'temperature', hum 'humidity' FROM home

SELECT temp AS 'temperature', hum AS 'humidity' FROM home

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版现已公开发布 Alpha 版

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看