文档文档

执行基本 SQL 查询

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

从 InfluxDB 3 Core 查询数据的基本 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 3 Core 将在查询结果集中返回行数据。SQL 查询结果集包括查询的 SELECT 语句中列出的列。

基本查询示例

示例数据

以下示例使用家庭传感器示例数据。要运行示例查询并返回结果,请在运行示例查询之前,将示例数据写入到你的 InfluxDB 3 Core 数据库。

在时间边界内查询数据

  • 使用 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 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看