SQL 逻辑运算符
InfluxDB 3 Core 处于公开 Alpha 阶段
InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适用于生产环境。该产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 alpha 体验的意见,并邀请您加入我们的公共频道以获取更新和分享反馈。
Alpha 预期和建议
- 在 alpha 期间,我们可能会进行破坏性更改,这可能需要您删除数据并重新开始。如果您使用的数据很重要,请在其他地方保留备份副本。
- 在 alpha 期间,我们会在每次合并到 InfluxDB
main
分支时生成新的构建版本。更改频繁,相关更新会发布到我们的公共频道。
逻辑运算符组合或操作 SQL 查询中的条件。
运算符 | 含义 | |
---|
AND | 如果两个操作数都为 true,则返回 true。否则,返回 false。 | |
BETWEEN | 如果左操作数在右操作数的范围内,则返回 true。 | |
EXISTS | 如果子查询的结果不为空,则返回 true。 | |
IN | 如果左操作数在右操作数列表中,则返回 true。 | |
LIKE | 如果左操作数与右操作数模式字符串匹配,则返回 true。 | |
NOT | 否定后续表达式。 | |
OR | 如果任何操作数为 true,则返回 true。否则,返回 false。 | |
AND
如果两个操作数都为 true
,则 AND
运算符返回 true
。否则,它返回 false。此运算符通常在 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 | 厨房 | 23.3 | 2022-01-01T18:00:00Z |
22 | 36.6 | 厨房 | 23.1 | 2022-01-01T19:00:00Z |
26 | 36.5 | 厨房 | 22.7 | 2022-01-01T20:00:00Z |
BETWEEN
如果左侧数字操作数在右侧操作数指定的范围内,则 BETWEEN
运算符返回 true
。否则,它返回 false
SELECT 6 BETWEEN 5 AND 8 AS "BETWEEN condition"
示例
WHERE
子句中的 BETWEEN
运算符
SELECT *
FROM home
WHERE
co BETWEEN 5 AND 10
co | hum | room | temp | time |
---|
7 | 36 | 厨房 | 22.4 | 2022-01-01T16:00:00Z |
9 | 36 | 厨房 | 22.7 | 2022-01-01T17:00:00Z |
5 | 35.9 | 客厅 | 22.6 | 2022-01-01T17:00:00Z |
9 | 36.2 | 客厅 | 22.8 | 2022-01-01T18:00:00Z |
EXISTS
如果 相关子查询 的结果不为空,则 EXISTS
运算符返回 true
。否则,它返回 false
。
请参阅 SQL 子查询运算符。
示例
WHERE
子句中带有子查询的 EXISTS
运算符
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 | 厨房 | 22.8 | 2022-01-01T13:00:00Z |
1 | 36.3 | 厨房 | 22.8 | 2022-01-01T14:00:00Z |
1 | 36.1 | 客厅 | 22.3 | 2022-01-01T15:00:00Z |
4 | 36 | 客厅 | 22.4 | 2022-01-01T16:00:00Z |
5 | 35.9 | 客厅 | 22.6 | 2022-01-01T17:00:00Z |
18 | 36.9 | 厨房 | 23.3 | 2022-01-01T18:00:00Z |
IN
如果左操作数在右操作数列表或子查询结果中,则 IN
运算符返回 true
。否则,它返回 false
。
SELECT 'John' IN ('Jane', 'John') AS "IN condition"
请参阅 SQL 子查询运算符。
示例
WHERE
子句中带有列表的 IN
运算符
SELECT *
FROM home
WHERE
room IN ('Bathroom', 'Bedroom', 'Kitchen')
LIMIT 4
co | hum | room | temp | time |
---|
0 | 35.9 | 厨房 | 21 | 2022-01-01T08:00:00Z |
0 | 36.2 | 厨房 | 23 | 2022-01-01T09:00:00Z |
0 | 36.1 | 厨房 | 22.7 | 2022-01-01T10:00:00Z |
0 | 36 | 厨房 | 22.4 | 2022-01-01T11:00:00Z |
WHERE
子句中带有子查询的 IN
运算符
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 | 客厅 | 21.1 | 2022-01-01T08:00:00Z |
0 | 35.9 | 厨房 | 21 | 2022-01-01T08:00:00Z |
0 | 35.9 | 客厅 | 21.4 | 2022-01-01T09:00:00Z |
0 | 36.2 | 厨房 | 23 | 2022-01-01T09:00:00Z |
LIKE
如果左操作数与右操作数中指定的字符串模式匹配,则 LIKE
运算符返回 true
。LIKE
表达式支持 SQL 通配符。
SELECT 'John' LIKE 'J_%n' AS "LIKE condition"
WHERE
子句中的 LIKE
运算符
SELECT *
FROM home
WHERE
room LIKE '%Room'
LIMIT 4
co | hum | room | temp | time |
---|
0 | 35.9 | 客厅 | 21.1 | 2022-01-01T08:00:00Z |
0 | 35.9 | 客厅 | 21.4 | 2022-01-01T09:00:00Z |
0 | 36 | 客厅 | 21.8 | 2022-01-01T10:00:00Z |
0 | 36 | 客厅 | 22.2 | 2022-01-01T11:00:00Z |
SQL 通配符
当使用 LIKE
运算符将字符串与模式匹配时,InfluxDB SQL 实现支持以下通配符。
字符 | 描述 |
---|
% | % 代表零个或多个字符 |
_ | _ 代表任何单个字符 |
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 | 客厅 | 21.1 | 2022-01-01T08:00:00Z |
0 | 35.9 | 客厅 | 21.4 | 2022-01-01T09:00:00Z |
0 | 36 | 客厅 | 21.8 | 2022-01-01T10:00:00Z |
0 | 36 | 客厅 | 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 | 厨房 | 22.4 | 2022-01-01T16:00:00Z |
4 | 36 | 客厅 | 22.4 | 2022-01-01T16:00:00Z |
9 | 36 | 厨房 | 22.7 | 2022-01-01T17:00:00Z |
9 | 36.2 | 客厅 | 22.8 | 2022-01-01T18:00:00Z |
17 | 36.4 | 客厅 | 22.2 | 2022-01-01T20:00:00Z |
26 | 36.5 | 厨房 | 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 | 厨房 | 21 | 2022-01-01T08:00:00Z |
0 | 36.2 | 厨房 | 23 | 2022-01-01T09:00:00Z |
0 | 36.1 | 厨房 | 22.7 | 2022-01-01T10:00:00Z |
0 | 36 | 厨房 | 22.4 | 2022-01-01T11:00:00Z |
0 | 36 | 厨房 | 22.5 | 2022-01-01T12:00:00Z |
26 | 36.5 | 厨房 | 22.7 | 2022-01-01T20:00:00Z |
OR
如果任何操作数为 true
,则 OR
运算符返回 true
。否则,它返回 false
。此运算符通常在 WHERE
子句 中用于组合多个条件。
SELECT true OR false AS "OR condition"
示例
WHERE
子句中的 OR
SELECT *
FROM home
WHERE
co > 20
OR temp > 23
co | hum | room | temp | time |
---|
18 | 36.9 | 厨房 | 23.3 | 2022-01-01T18:00:00Z |
22 | 36.6 | 厨房 | 23.1 | 2022-01-01T19:00:00Z |
26 | 36.5 | 厨房 | 22.7 | 2022-01-01T20:00:00Z |
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户 可以 联系 InfluxData 支持。