执行基本的 SQL 查询
InfluxDB SQL 实现由 Apache Arrow DataFusion 查询引擎驱动,该引擎提供类似于其他关系查询语言的 SQL 语法。
一个基本的SQL查询从InfluxDB查询数据时通常包括以下子句:
* Required- *
SELECT: 指定要从某个测量中输出的字段、标签和计算,或者使用通配符别名 (*) 来选择某个测量中的所有字段和标签。 - *
FROM: 指定要查询数据的测量。 WHERE: 仅返回满足指定条件的数据——例如,落在时间范围内,包含特定标签值,或包含超出指定范围的字段值。
结果集
如果至少有一行满足查询,InfluxDB Cloud Serverless 将在查询结果集中返回行数据。
SQL 查询结果集包括在查询的 SELECT 语句中列出的列。
基本查询示例
在时间边界内查询数据
- 使用
SELECT子句来指定要返回哪些列(标签和字段)。
要返回所有标签和字段,请使用通配符别名 (*)。 - 在
FROM子句中,指定要查询的表(测量)。 - 在
WHERE子句中,指定过滤的时间边界和其他条件。 包含基于时间的谓词,将time列的值与时间戳进行比较。 使用AND逻辑运算符将多个谓词链接在一起。
查询时间边界可以是相对的或绝对的。
查询不受时间限制的数据
要查询没有时间限制的数据,请在您的 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