美文网首页
5.InfluxDB-InfluxQL基础语法教程--WHERE

5.InfluxDB-InfluxQL基础语法教程--WHERE

作者: MrSuhaha | 来源:发表于2019-10-17 11:16 被阅读0次

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/)

    WHERE子句

    语法:

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

    1. 在WHERE子句中,支持在fields, tags, and timestamps上进行条件表达式的运算。
    2. 在InfluxDB的WHERE子句中,不支持使用 OR 来指定不同的time区间,如下面的sql将会返回空:
    SELECT * FROM "absolutismus"
    WHERE time = '2016-07-31T20:07:00Z'
        OR time = '2016-07-31T23:07:17Z'
    
    Fields

    语法如下:

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

    在WHERE子句中,支持对string, boolean, float 和 integer类型的field values进行比较。

    注意 :<font color=Red size=3> 在WHERE子句中,如果是string类型的field value,一定要用单引号括起来。如果不适用引号括起来,或者使用的是双引号,将不会返回任何数据,有时甚至都不报错! </font>

    WHERE支持的运算符如下:

    Operator Meaning
    = equal to
    <> not equal to
    != not equal to
    > greater than
    >= greater than or equal to
    < less than
    <= less than or equal to

    支持的更多运算符详见: Arithmetic Operations, Regular Expressions

    Tags

    语法如下:

    tag_key <operator> ['tag_value']
    

    <font color=Red size=3>对于在WHERE子句中的tag values,也要用单引号括起来。如果不用引号括起来,或者使用双引号,则查询不会返回任务数据。甚至不会报错。</font>

    Tag支持的运算符如下:

    Operator Meaning
    = equal to
    <> not equal to
    != not equal to

    还支持正则运算: Regular Expressions

    Timestamps

    对于大部分的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()。

    Time Syntax 小节将会介绍如何在WHERE子句中指定时间 区间。


    WHERE示例sql

    1. Select data that have specific field key-values
    1. Select data that have a specific string field key-value

      InfluxQL requires single quotes around string field values in the WHERE clause.
    1. Select data that have a specific field key-value and perform basic arithmetic
    1. Select data that have a specific tag key-value
      InfluxQL requires single quotes around tag values in the WHERE clause.
    1. Select data that have specific field key-values and tag key-values
      The WHERE clause supports the operators AND and OR, and supports separating logic with parentheses.
    1. Select data that have specific timestamps
      该sql将查询h2o_feet中在7天以内的所有数据

    关于WHERE语句的常见疑问

    问题 :where子句查询意外地未返回任何数据。

    :通常情况,出现该问题是因为在WHERE子句中没有对tag values或string类型的field values使用单引号括起来的缘故。对于WHERE子句中的tag values或string类型的field values,如果没有用引号括起来,或者是用的双引号,这种时候,查询不会返回任何结果,有时甚至也不会报错。
    在下面的示例sql中,对tag value的引号使用做说明。第一个sql没有对tag value使用引号,第二个sql对tag value使用了双引号,第三个sql则对tag value使用了单引号。可以看到,第一和第二个sql都没有返回任何查询结果,而第三个sql返回了预期中的结果。

    在下面的sql对string类型的field value的引号情况做说明,其中field value为“at or greater than 9 feet”。第一个sql没有对field value使用引号,第二个sql对field value使用了双引号,第三个sql则对field value使用了单引号。可以看到,第一个sql报错了,因为field valus中包含了空格。第二个sql虽然没报错,但是查询结果为空。第三个sql返回了预期中的结果。

    相关文章

      网友评论

          本文标题:5.InfluxDB-InfluxQL基础语法教程--WHERE

          本文链接:https://www.haomeiwen.com/subject/wajmmctx.html