Cassandra删除查询

Cassandra delete query

我是 运行 3.0.9 的 cassandra 版本

这是我的 table 结构

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

日期时间、移动设备和协议是主键,因此我创建了所有 3 个作为主键(我想使用协议更新具有日期时间的特定移动设备的字节)但我也想仅通过日期时间删除记录比如删除所有小于特定日期的记录

我试过这样

delete from emp where datetime > 1000;

但这不起作用

谁能帮帮我

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

示例:

aploetz@cqlsh:Whosebug> 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:Whosebug> delete from emp where datetime > 1000;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Some 
    partition key parts are missing: mobile"

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

aploetz@cqlsh:Whosebug> SELECT * FROM emp;

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

(2 rows)