我有TABLE
这样:
id | expected | current
------+----------+--------
123 | 25 | 15
234 | 26 | 26
345 | 37 | 37
现在,我要选择ids
等于current
的所有expected
。在SQL中我会做这样的事情:
SELECT id FROM myTable WHERE current = expected;
但在CQL中似乎无效。我的cqlsh
会返回此信息:
no viable alternative at input 'current'
是否有有效的CQL查询来实现这一目标?
被修改 根据CQL-Docs,它应该可以工作,但它不会......这就是文档所说的:
<selectWhereClause> ::= <relation> ( "AND" <relation> )*
| <term> "IN" "(" <term> ( "," <term> )* ")"
<relation> ::= <term> <relationOperator> <term>
<relationOperator> ::= "=" | "<" | ">" | "<=" | ">="
<term> ::= "KEY"
| <identifier>
| <stringLiteral>
| <integer>
| <float>
| <uuid>
;
答案 0 :(得分:3)
我使用了错误的文档。我正在使用CQL3并阅读CQL2的文档。 正确的文件说:
<where-clause> ::= <relation> ( AND <relation> )*
<relation> ::= <identifier> <op> <term>
| '(' <identifier> (',' <identifier>)* ')' <op> '(' <term> (',' <term>)* ')'
| <identifier> IN '(' ( <term> ( ',' <term>)* )? ')'
| TOKEN '(' <identifier> ( ',' <identifer>)* ')' <op> <term>
所以它不是一个有效的查询。