Cassandra:使用一个查询的输出作为另一个查询的输入
问题描述:
我有两个表,一个是用户,另一个是expired_users。Cassandra:使用一个查询的输出作为另一个查询的输入
用户columns-> ID,姓名,年龄 expired_users列 - > ID,名称
我想请执行以下查询。
从用户中删除其中的id(select id from expired_users);
此查询适用于SQL相关数据库。我想找到解决方案来解决cassandra中的这个问题。
PS:我不想在表中添加任何额外的列。
答
在设计cassandra数据模型时,我们不能完全像RDBMS那样思考。 设计这样的 -
create table users (
id int,
name text,
age int,
expired boolean static,
primary key (id,name)
);
要标记用户为过期 - 只需重新插入同一行
insert into users (id,name,age,expired) values (100,'xyz',80,true);
你没有更新或删除行,只是重新插入,以前的列值将被覆盖。
答
你想要使用连接作为你的删除语句的过滤器,这不是Cassandra模型的目的。
AFAIK没有办法使用cql来执行此操作。如果您想在不更改模式的情况下执行此操作,请使用任何具有Cassandra驱动程序的语言运行外部脚本。
这并不能解决我的目的。我无法改变现有的表格结构。 –
@Bhanu Boppana如果你添加表格定义,那么会更好。 – Gunwant
我已经在问题的表格中添加了列。如果您需要更多信息,请告诉我。 –