abh*_*bhi 6 select cql where cassandra
在Cassandra中是否可以在select语句中的where子句之后使用多个条件联合在一起,就像在任何RDBMS中一样.这是我的代码:
SELECT * from TABLE_NAME WHERE COND1= 'something' OR COND2 = 'something';
Run Code Online (Sandbox Code Playgroud)
sdo*_*lgy 12
简单回答:没有OR的等价物
http://www.datastax.com/docs/0.8/dml/using_cql
以下是v0.8的命令参考:
http://www.datastax.com/docs/0.8/references/cql#cql-reference
SELECT [FIRST N] [REVERSED] FROM [USING] [WHERE] [LIMIT N];
..
WHERE子句用于过滤结果中显示的行.该子句可以过滤键名或键范围,对于索引列,可以过滤列值.键过滤器使用KEY关键字,关系运算符(=,>,> =,<和<=之一)和术语值指定.当术语出现在关系运算符的两侧时,假定过滤器适用于索引列.对于列索引过滤器,运算符左侧的术语是名称,右侧的术语是要过滤的值.
the*_*aul 12
假设COND是表的主键的名称,您可以:
SELECT * from TABLE_NAME WHERE COND1 in ('something', 'something');
Run Code Online (Sandbox Code Playgroud)
因此,没有完全一般的OR操作,但看起来这可能与您尝试做的相同.
请记住,当您使用CQL时,该查询计划并不意味着它的优势之一.Cassandra代码通常会假设您拥有大量数据,因此它会尽量避免执行任何可能最终成本高昂的查询.在RMDBS世界中,您可以根据内在关系(第三范式等)构建数据,而在Cassandra中,您可以根据预期需要的查询来构建数据.非规范化是(原谅双关语)的规范.
重点是,与旧的Thrift RPC接口相比,CQL是用于制作Cassandra查询的更熟悉,友好的语法.它不像SQL那样具有完全表达性和灵活性.