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.145224194
和 2262-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'
输出
time | water_level |
---|---|
2019-08-17T00:00:00Z | 2.0640000000 |
2019-08-17T00:06:00Z | 2.1160000000 |
2019-08-17T00:12:00Z | 2.0280000000 |
2019-08-17T00:18:00Z | 2.1260000000 |
2019-08-17T00:24:00Z | 2.0410000000 |
2019-08-17T00:30:00Z | 2.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'
输出
time | level_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 英尺 |
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和 Bug 报告。要获得支持,请使用以下资源
拥有年度或支持合同的客户可以联系 InfluxData 支持。