文档文档

WHERE 子句

使用 WHERE 子句根据字段标签和/或时间戳过滤数据。

语法

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]

WHERE 子句支持对字段、标签和时间戳的 conditional_expressions

注意: InfluxDB 不支持在 WHERE 子句中使用 OR 来指定多个时间范围。例如,对于以下查询,InfluxDB 返回一个空响应

SELECT * FROM "mydb" WHERE time = '2020-07-31T20:07:00Z' OR time = '2020-07-31T23:07:17Z'`

字段

field_key <operator> ['string' | boolean | float | integer]

WHERE 子句支持针对字符串、布尔值、浮点数和整数字段值进行比较。

WHERE 子句中,使用单引号引用字符串字段值。使用未加引号的字符串字段值或双引号字符串字段值的查询不会返回任何数据,并且在大多数情况下,不会返回错误

支持的运算符

运算符含义
=等于
<>不等于
!=不等于
>大于
>=大于或等于
<小于
<=小于或等于

InfluxQL 还支持正则表达式

标签

tag_key <operator> ['tag_value']

WHERE 子句中,使用单引号引用标签值。使用未加引号的标签值或双引号标签值的查询不会返回任何数据,并且在大多数情况下,不会返回错误

支持的运算符

运算符含义
=等于
<>不等于
!=不等于

时间戳

对于大多数 SELECT 语句,默认时间范围介于1677-09-21 00:12:43.1452241942262-04-11T23:47:16.854775806Z UTC之间。对于带有GROUP BY time() 子句SELECT 语句,默认时间范围介于 1677-09-21 00:12:43.145224194 UTC 和 now() 之间。

有关如何在 WHERE 子句中指定替代时间范围的信息,请参阅时间语法

示例

选择具有特定字段键值的数据

选择具有特定字符串字段键值的数据

选择具有特定字段键值并执行基本算术运算的数据

选择具有特定标签键值的数据

选择具有特定字段键值和标签键值的数据

SELECT * FROM "h2o_feet" WHERE time > now() - 7d

该查询从 h2o_feet 测量中返回过去七天内的时间戳。有关 WHERE 子句中支持的时间语法的更深入信息,请参阅时间语法

WHERE 子句的常见问题

WHERE 子句查询意外地未返回任何数据

在大多数情况下,此问题是由于标签值或字符串字段值周围缺少单引号造成的。使用未加引号或双引号的标签值或字符串字段值的查询不会返回任何数据,并且在大多数情况下,不会返回错误。

以下代码块中的前两个查询尝试指定未加引号和使用双引号的标签值 santa_monica。这些查询未返回任何结果。第三个查询使用单引号引用 santa_monica(这是支持的语法),并返回预期的结果。

SELECT "water_level" FROM "h2o_feet" WHERE "location" = santa_monica
No results

SELECT "water_level" FROM "h2o_feet" WHERE "location" = "santa_monica"
No results

SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica'

输出

名称: h2o_feet

timewater_level
2019-08-17T00:00:00Z2.0640000000
2019-08-17T00:06:00Z2.1160000000
2019-08-17T00:12:00Z2.0280000000
2019-08-17T00:18:00Z2.1260000000
2019-08-17T00:24:00Z2.0410000000
2019-08-17T00:30:00Z2.0510000000

以下代码块中的前两个查询尝试指定未加引号和使用双引号的字符串字段值 at or greater than 9 feet。第一个查询返回错误,因为字符串字段值包含空格。第二个查询未返回任何结果。第三个查询使用单引号引用 at or greater than 9 feet(这是支持的语法),并返回预期的结果。

SELECT "level description" FROM "h2o_feet" WHERE "level description" = at or greater than 9 feet
ERR: 400 Bad Request: failed to parse query: found than, expected ; at line 1, char 86

SELECT "level description" FROM "h2o_feet" WHERE "level description" = "at or greater than 9 feet"
No results

SELECT "level description" FROM "h2o_feet" WHERE "level description" = 'at or greater than 9 feet'

输出

名称: h2o_feet

timelevel_description
2019-08-25T04:00:00Z大于或等于 9 英尺
2019-08-25T04:06:00Z大于或等于 9 英尺
019-08-25T04:12:00Z大于或等于 9 英尺
2019-08-25T04:18:00Z大于或等于 9 英尺
2019-08-25T04:24:00Z大于或等于 9 英尺

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看