docs-v2/content/shared/sql-reference/operators/logical.md

11 KiB

Logical operators combine or manipulate conditions in a SQL query.

Operator Meaning
AND Returns true if both operands are true. Otherwise, returns false. {{< icon "link" >}}
BETWEEN Returns true if the left operand is within the range of the right operand. {{< icon "link" >}}
EXISTS Returns true if the results of a subquery are not empty. {{< icon "link" >}}
IN Returns true if the left operand is in the right operand list. {{< icon "link" >}}
LIKE Returns true if the left operand matches the right operand pattern string. {{< icon "link" >}}
NOT Negates the subsequent expression. {{< icon "link" >}}
OR Returns true if any operand is true. Otherwise, returns false. {{< icon "link" >}}

[!Note]

Sample data

Query examples on this page use the following sample data sets:

AND

The AND operand returns true if both operands are true. Otherwise, it returns false. This operator is typically used in the WHERE clause to combine multiple conditions.

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT true AND false AS "AND condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

AND condition
false

{{% /flex-content %}} {{< /flex >}}

Examples

{{< expand-wrapper >}} {{% expand "AND operator in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  co > 10
  AND room = 'Kitchen'

{{% influxdb/custom-timestamps %}}

co hum room temp time
18 36.9 Kitchen 23.3 2022-01-01T18:00:00Z
22 36.6 Kitchen 23.1 2022-01-01T19:00:00Z
26 36.5 Kitchen 22.7 2022-01-01T20:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

BETWEEN

The BETWEEN operator returns true if the left numeric operand is within the range specified in the right operand. Otherwise, it returns false

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT 6 BETWEEN 5 AND 8 AS "BETWEEN condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

BETWEEN condition
true

{{% /flex-content %}} {{< /flex >}}

Examples

{{< expand-wrapper >}} {{% expand "BETWEEN operator in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  co BETWEEN 5 AND 10

{{% influxdb/custom-timestamps %}}

co hum room temp time
7 36 Kitchen 22.4 2022-01-01T16:00:00Z
9 36 Kitchen 22.7 2022-01-01T17:00:00Z
5 35.9 Living Room 22.6 2022-01-01T17:00:00Z
9 36.2 Living Room 22.8 2022-01-01T18:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

EXISTS

The EXISTS operator returns true if result of a correlated subquery is not empty. Otherwise it returns false.

See SQL subquery operators.

Examples

{{< expand-wrapper >}} {{% expand "EXISTS operator with a subquery in the WHERE clause" %}}

SELECT *
FROM
  home home_actions
WHERE EXISTS (
  SELECT *
  FROM home
  WHERE
    home.co = home_actions.co - 1
)
ORDER BY time

{{% influxdb/custom-timestamps %}}

co hum room temp time
1 36.5 Kitchen 22.8 2022-01-01T13:00:00Z
1 36.3 Kitchen 22.8 2022-01-01T14:00:00Z
1 36.1 Living Room 22.3 2022-01-01T15:00:00Z
4 36 Living Room 22.4 2022-01-01T16:00:00Z
5 35.9 Living Room 22.6 2022-01-01T17:00:00Z
18 36.9 Kitchen 23.3 2022-01-01T18:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

IN

The IN operator returns true if the left operand is in the right operand list or subquery result. Otherwise, it returns false.

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT 'John' IN ('Jane', 'John') AS "IN condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

IN condition
true

{{% /flex-content %}} {{< /flex >}}

See SQL subquery operators.

Examples

{{< expand-wrapper >}} {{% expand "IN operator with a list in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  room IN ('Bathroom', 'Bedroom', 'Kitchen')
LIMIT 4

{{% influxdb/custom-timestamps %}}

co hum room temp time
0 35.9 Kitchen 21 2022-01-01T08:00:00Z
0 36.2 Kitchen 23 2022-01-01T09:00:00Z
0 36.1 Kitchen 22.7 2022-01-01T10:00:00Z
0 36 Kitchen 22.4 2022-01-01T11:00:00Z

{{% /influxdb/custom-timestamps %}}

{{% /expand %}} {{% expand "IN operator with a subquery in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  room IN (
    SELECT DISTINCT room
    FROM home_actions
  )
ORDER BY time
LIMIT 4

{{% influxdb/custom-timestamps %}}

co hum room temp time
0 35.9 Living Room 21.1 2022-01-01T08:00:00Z
0 35.9 Kitchen 21 2022-01-01T08:00:00Z
0 35.9 Living Room 21.4 2022-01-01T09:00:00Z
0 36.2 Kitchen 23 2022-01-01T09:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

LIKE

The LIKE operator returns true if the left operand matches the string pattern specified in the right operand. LIKE expressions support SQL wildcard characters.

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT 'John' LIKE 'J_%n' AS "LIKE condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

LIKE condition
true

{{% /flex-content %}} {{< /flex >}}

{{< expand-wrapper >}} {{% expand "LIKE operator in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  room LIKE '%Room'
LIMIT 4

{{% influxdb/custom-timestamps %}}

co hum room temp time
0 35.9 Living Room 21.1 2022-01-01T08:00:00Z
0 35.9 Living Room 21.4 2022-01-01T09:00:00Z
0 36 Living Room 21.8 2022-01-01T10:00:00Z
0 36 Living Room 22.2 2022-01-01T11:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

SQL wildcard characters

The InfluxDB SQL implementation supports the following wildcard characters when using the LIKE operator to match strings to a pattern.

Character Description
% Represents zero or more characters
_ Represents any single character

NOT

The NOT operator negates the subsequent expression.

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT NOT true AS "NOT condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

NOT condition
false

{{% /flex-content %}} {{< /flex >}}

Examples

{{< expand-wrapper >}} {{% expand "NOT IN" %}}

SELECT *
FROM home
WHERE
  room NOT IN ('Kitchen', 'Bathroom')
LIMIT 4

{{% influxdb/custom-timestamps %}}

co hum room temp time
0 35.9 Living Room 21.1 2022-01-01T08:00:00Z
0 35.9 Living Room 21.4 2022-01-01T09:00:00Z
0 36 Living Room 21.8 2022-01-01T10:00:00Z
0 36 Living Room 22.2 2022-01-01T11:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}}

{{% expand "NOT EXISTS" %}}

SELECT *
FROM
  home home_actions
WHERE NOT EXISTS (
  SELECT *
  FROM home
  WHERE
    home.co = home_actions.co + 4
)
ORDER BY time

{{% influxdb/custom-timestamps %}}

co hum room temp time
7 36 Kitchen 22.4 2022-01-01T16:00:00Z
4 36 Living Room 22.4 2022-01-01T16:00:00Z
9 36 Kitchen 22.7 2022-01-01T17:00:00Z
9 36.2 Living Room 22.8 2022-01-01T18:00:00Z
17 36.4 Living Room 22.2 2022-01-01T20:00:00Z
26 36.5 Kitchen 22.7 2022-01-01T20:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}}

{{% expand "NOT BETWEEN" %}}

SELECT *
FROM home
WHERE
  co NOT BETWEEN 1 AND 22
  AND room = 'Kitchen'

{{% influxdb/custom-timestamps %}}

co hum room temp time
0 35.9 Kitchen 21 2022-01-01T08:00:00Z
0 36.2 Kitchen 23 2022-01-01T09:00:00Z
0 36.1 Kitchen 22.7 2022-01-01T10:00:00Z
0 36 Kitchen 22.4 2022-01-01T11:00:00Z
0 36 Kitchen 22.5 2022-01-01T12:00:00Z
26 36.5 Kitchen 22.7 2022-01-01T20:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}

OR

The OR operator returns true if any operand is true. Otherwise, it returns false. This operator is typically used in the WHERE clause to combine multiple conditions.

{{< flex >}} {{% flex-content "two-thirds operator-example" %}}

SELECT true OR false AS "OR condition"

{{% /flex-content %}} {{% flex-content "third operator-example" %}}

OR condition
true

{{% /flex-content %}} {{< /flex >}}

Examples

{{< expand-wrapper >}} {{% expand "OR in the WHERE clause" %}}

SELECT *
FROM home
WHERE
  co > 20
  OR temp > 23

{{% influxdb/custom-timestamps %}}

co hum room temp time
18 36.9 Kitchen 23.3 2022-01-01T18:00:00Z
22 36.6 Kitchen 23.1 2022-01-01T19:00:00Z
26 36.5 Kitchen 22.7 2022-01-01T20:00:00Z

{{% /influxdb/custom-timestamps %}} {{% /expand %}} {{< /expand-wrapper >}}