我用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;
但这不起作用
任何人都请帮助我
答案 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)