SQL逻辑运算符
逻辑运算符在SQL查询中组合或操作条件。
| 运算符 | 含义 | |
|---|
AND | 如果两个操作数都为真,则返回真。否则,返回假。 | |
BETWEEN | 如果左操作数在右操作数指定的范围内,则返回真。 | |
EXISTS | 如果子查询的结果不为空,则返回真。 | |
IN | 如果左操作数在右操作数列表中,则返回真。 | |
LIKE | 如果左操作数匹配右操作数的模式字符串,则返回真。 | |
NOT | 否定后续表达式。 | |
OR | 如果任何操作数为真,则返回真。否则,返回假。 | |
AND
如果两个操作数都为真,则AND操作数返回true。否则,它返回假。此运算符通常用于WHERE子句以组合多个条件。
SELECT true AND false AS "AND condition"
示例
WHERE子句中的AND运算符
SELECT *
FROM home
WHERE
co > 10
AND room = 'Kitchen'
| 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 |
BETWEEN
如果左数值操作数在右操作数指定的范围内,则BETWEEN运算符返回true。否则,它返回false
SELECT 6 BETWEEN 5 AND 8 AS "BETWEEN condition"
示例
BETWEEN子句中的BETWEEN运算符
SELECT *
FROM home
WHERE
co BETWEEN 5 AND 10
| 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 |
EXISTS
如果相关子查询的结果不为空,则EXISTS运算符返回true。否则,它返回false。
请参阅SQL子查询运算符。
示例
EXISTS 操作符与子查询在 WHERE 子句中使用
SELECT *
FROM
home home_actions
WHERE EXISTS (
SELECT *
FROM home
WHERE
home.co = home_actions.co - 1
)
ORDER BY time
| 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 |
IN
IN 操作符如果左操作数在右操作数列表或子查询结果中,则返回 true。否则,返回 false。
SELECT 'John' IN ('Jane', 'John') AS "IN condition"
请参阅SQL子查询运算符。
示例
IN 操作符与 WHERE 子句中的列表
SELECT *
FROM home
WHERE
room IN ('Bathroom', 'Bedroom', 'Kitchen')
LIMIT 4
| 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 |
IN 操作符与 WHERE 子句中的子查询
SELECT *
FROM home
WHERE
room IN (
SELECT DISTINCT room
FROM home_actions
)
ORDER BY time
LIMIT 4
| 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 |
LIKE
LIKE 操作符如果左操作数匹配右操作数中指定的字符串模式,则返回 true。LIKE 表达式支持 SQL 通配符。
SELECT 'John' LIKE 'J_%n' AS "LIKE condition"
LIKE 操作符在 WHERE 子句中
SELECT *
FROM home
WHERE
room LIKE '%Room'
LIMIT 4
| 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 |
SQL 通配符
InfluxDB SQL 实现支持以下通配符,当使用 LIKE 操作符匹配字符串模式时。
NOT
NOT 操作符否定后续表达式。
SELECT NOT true AS "NOT condition"
示例
NOT IN
SELECT *
FROM home
WHERE
room NOT IN ('Kitchen', 'Bathroom')
LIMIT 4
| 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 |
NOT EXISTS
SELECT *
FROM
home home_actions
WHERE NOT EXISTS (
SELECT *
FROM home
WHERE
home.co = home_actions.co + 4
)
ORDER BY time
| 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 |
NOT BETWEEN
SELECT *
FROM home
WHERE
co NOT BETWEEN 1 AND 22
AND room = 'Kitchen'
| 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 |
OR
OR 操作符如果任何操作数为 true,则返回 true。否则,返回 false。此操作符通常用于在 WHERE 子句 中组合多个条件。
SELECT true OR false AS "OR condition"
示例
OR 在 WHERE 子句中
SELECT *
FROM home
WHERE
co > 20
OR temp > 23
| 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 及此文档的反馈和错误报告。要找到支持,请使用以下资源
拥有年度或支持合同的客户 可以 联系 InfluxData 支持。