SELECT * FROM alarm_history
WHERE domain IN ('BAREMETAL','CLOUD','CORE','FIBER','INFRA','PLATFORM','RAN','SECURITY','TRANSPORT')
AND ((actual_severity = 'MAJOR') AND (technology = 'LTE'))
ALLOW FILTERING;
当我在 cassandra 上执行此查询时出现错误
SyntaxException: line 1:162 mismatched input 'AND' expecting ')' (... \
((actual_severity = 'MAJOR') [AND]...)
但是当我通过删除括号来执行时
SELECT * FROM alarm_history
WHERE domain IN ('BAREMETAL','CLOUD','CORE','FIBER','INFRA','PLATFORM','RAN','SECURITY','TRANSPORT')
AND actual_severity = 'MAJOR'
AND technology = 'LTE'
ALLOW FILTERING;
执行成功并返回结果
为什么会发生这种情况..? ,逻辑上查询是相同的,应该运行两个查询。
如果我在任何时候错了,请纠正我,我是 cassandra 的新手。
CQL 不像 SQL 那样支持括号。
当然,在 SQL 中,第一条语句可能是有效的。但在 CQL 中,括号仅在特定情况下有效,例如使用
IN
运算符或调用函数时。但简单地将它们添加到 WHERE
子句中的项目周围将导致 CQL 解析器抛出上面所示的错误。