【问题标题】:CQL syntax error: "mismatched input 'and' expecting ')' "CQL 语法错误:“不匹配的输入'和'期望')'”
【发布时间】:2021-03-29 21:02:09
【问题描述】:

我正在执行以下查询:

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分隔,准备一个大查询。

【问题讨论】:

标签: cassandra where-clause cql


【解决方案1】:

这只是括号括起构成 where 子句的条件。

子查询与否,CQL 解析器不允许额外的括号。

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

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

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

tl;dr;

CQL != SQL。在我看来,这更像是 Postgres 或 MariaDB 的用例。

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 2022-06-21
    • 2022-01-05
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多