【问题标题】:Cassandra CQL selecting rows with has values different on two columnsCassandra CQL 选择两列值不同的行
【发布时间】:2013-07-15 16:25:57
【问题描述】:

我创建表:

CREATE TABLE T (
            I int PRIMARY KEY,
            A text,
            B text
);

比我添加两列 XY 使用:

ALTER TABLE T ADD X int;
CREATE INDEX ON T (X);
ALTER TABLE T ADD Y int;
CREATE INDEX ON T (Y);

我放了一些数据,现在我想计算 XY 上具有不同值的行(即使 X Y 也可以)。我尝试过这样的事情:

select COUNT(*) from T where X < Y ;

如果没有COUNT,这也行不通 - 只是简单的*

但我收到错误no viable alternative at input ';' 您对如何克服此错误有一些建议吗? 我尝试使用计数器而不是整数,但他们强迫我将所有非计数器数据放入主键,这对我来说不是一个好主意...

我正在使用 Cassandra 1.2.6 和 CQL 3。

PS 我可以对所有行执行 UPDATE 吗?没有WHERE 子句还是有一些虚拟子句?

【问题讨论】:

  • 您的 Y 变量未编入索引。您是否尝试过在 Y 上创建索引然后运行查询。
  • 它们被编入索引.. 刚刚展示了我如何添加它们以及如何在一张表上设置索引的示例..
  • 你可以看看 CQL 参考。我认为不支持这种关系查询。详情请阅读:cassandra.apache.org/doc/cql3/CQL.html#selectStmt
  • 恐怕你是对的:/

标签: cassandra cql cql3


【解决方案1】:

由于 Cassandra 更喜欢简单的读取,Cassandra 的方法是在更新/插入时插入一个布尔标记的列。使用(二级)索引,您也可以更快地查询读取。

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 2016-04-14
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2014-01-03
    • 2018-09-27
    相关资源
    最近更新 更多