Cassandra删除查询

时间:2017-02-24 11:49:43

标签: cassandra cql cassandra-2.1

我用3.0.9运行cassandra版本

这是我的表结构

CREATE TABLE emp (
  datetime bigint,
   mobile bigint,
   protocol varchar,
   bytes bigint,
  PRIMARY KEY (mobile, protocol, datetime)
);

日期时间,移动设备和协议是主键,因此我创建了全部3作为主键(我希望使用协议更新特定移动设备的日期时间的字节)但我也希望仅删除日期时间的记录,例如删除所有小于特定日期的记录

T试过这个

delete from emp where datetime > 1000;

但这不起作用

任何人都请帮助我

1 个答案:

答案 0 :(得分:2)

与查询类似,您需要在Cassandra中为DELETE完全指定主键组件。您可以按部分主键组件删除,只要您按正确的顺序指定它们即可。但是,您不能仅指定(如您的示例中)最后一个聚类键。

示例:

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 mobile | protocol | datetime | bytes
--------+----------+----------+-------
      1 |   native |      400 |     4
      1 |   native |      600 |     3
      1 |   native |     1500 |     1
      1 |   native |     1600 |     2

(4 rows)
aploetz@cqlsh:stackoverflow> delete from emp where datetime > 1000;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Some 
    partition key parts are missing: mobile"

aploetz@cqlsh:stackoverflow> delete from emp 
    where mobile=1 AND protocol='native' AND datetime > 1000;

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 mobile | protocol | datetime | bytes
--------+----------+----------+-------
      1 |   native |      400 |     4
      1 |   native |      600 |     3

(2 rows)