在Cassandra中是否有可能在任何RDBMS中的select语句中的where子句之后使用多个条件联合ed。这里是我的代码:选择语句中where子句之后的OR条件的替代方法Cassandra
SELECT * from TABLE_NAME WHERE COND1= 'something' OR COND2 = 'something';
在Cassandra中是否有可能在任何RDBMS中的select语句中的where子句之后使用多个条件联合ed。这里是我的代码:选择语句中where子句之后的OR条件的替代方法Cassandra
SELECT * from TABLE_NAME WHERE COND1= 'something' OR COND2 = 'something';
答案很简单:没有的同等或
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] [R EVERSED] FROM [USING] [WHERE] [LIMIT N];
..
WHERE子句提供用于过滤显示在搜索结果中的行。该子句可以过滤一个键名称或键的范围,对于索引列,也可以按列值进行过滤。关键过滤器使用KEY关键字(一个关系运算符)(=,>,> =,<和< =中的一个)和一个术语值指定。当关系运算符的两侧出现条件时,假定过滤器适用于索引列。使用列索引过滤器时,操作符左侧的术语是名称,右侧的术语是要过滤的值。
假设COND是你的表的主键的名称,你可以这样做:
SELECT * from TABLE_NAME WHERE COND1 in ('something', 'something');
因此,不存在完全通用OR
操作,但看起来这可能相当于你是什么试图去做。
请记住,当您使用CQL时,该查询计划并不意味着它的优势之一。 Cassandra代码通常会假设您拥有大量数据,因此它会尽量避免执行任何可能最终导致代价高昂的查询。在RMDBS世界中,您根据内在关系(第三范式等)构建数据,而在Cassandra中,您根据预期需要的查询构建数据。非规范化是(原谅双关语)规范。需要指出的是,与早期的Thrift RPC接口相比,CQL旨在成为用于制作Cassandra查询的更为熟悉且友好的语法。它的目的不是完全表达和灵活的SQL的方式。
保罗,我已经尝试了上面的语句,但是它在cql shell中显示错误,指出不匹配的输入'IN'期望设置为空。记住在例子中COND1是二级索引。 – abhi 2012-05-10 07:05:40
对。该构造仅适用于主键。 – 2012-05-10 15:12:19