CQL 语法错误:"mismatched input 'and' expecting ')' "



我正在执行以下查询:

SELECT * FROM test
WHERE (
Column11 in ('Value1','Value2','Vlaue3')
AND Column12 in ('Value11','Value22','Vlaue32')
AND Column13 = 'Value99'
);

这给出了以下错误:

mismatched input 'and' expecting ')' (...,'Value3')  [and]...)

但当我在没有外部大括号的情况下执行上面的查询时,它工作得很好。

SELECT * FROM test 
WHERE Column11 in ('Value1','Value2','Vlaue3')  
AND Column12 in ('Value11','Value22','Vlaue32') 
AND Column13 = 'Value99' ;

有什么方法可以执行第一个查询吗?因为我想添加多个以OR分隔的子句,并准备一个大查询。

这个只是圆括号,其中包含了构成where子句的条件。

无论是否使用子查询,CQL解析器都不允许使用额外的paren。

我想添加多个以OR分隔的子句,并准备一个大查询。

由于Cassandra在数据分布和读取路径方面的基本工程选择,OR不是有效的CQL关键字。

Cassandra要求您根据预期的查询模式对表进行建模。运行查询时,目标应该是确保它可以由集群中的单个节点提供服务。基于OR的逻辑往往更开放,而不关注精确的键值。

tl;dr

CQL!=SQL。这听起来更像是Postgres或MariaDB的用例。