为什么CQL WHERE子句中的括号会返回SyntaxException?

问题描述 投票:0回答:1
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 的新手。

cassandra cql
1个回答
1
投票

CQL 不像 SQL 那样支持括号。

当然,在 SQL 中,第一条语句可能是有效的。但在 CQL 中,括号仅在特定情况下有效,例如使用

IN
运算符或调用函数时。但简单地将它们添加到
WHERE
子句中的项目周围将导致 CQL 解析器抛出上面所示的错误。

© www.soinside.com 2019 - 2024. All rights reserved.