卡桑德拉删除查询



我正在使用3.0.9

运行Cassandra版本

这是我的表结构

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

日期时间,移动和协议是主要键,因此我将所有3个作为主键创建(我想使用协议使用DateTime更新特定移动设备的字节),但我也只想使用DateTime删除记录所有记录都小于特定日期

t尝试这样的

delete from emp where datetime > 1000;

但这不起作用

任何人请帮助我

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

示例:

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)

最新更新