cassandra,如果集合包含值,则删除

2skhul33  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(502)

我是Cassandra的初学者,我有一张这样的table:

CREATE TABLE Books(
Title text PRIMARY KEY,
Authors set<text>,
Family set <text>,
Publisher text,
Price decimal
);

(缺少其他选项,因为这只是一个示例)
现在我要执行以下查询: DELETE Price FROM Books WHERE Authors CONTAINS 'J.K. Rowling' IF EXISTS; 但它不起作用。我在谷歌上搜索,但什么也没找到。
希望有人能帮助我,如果我的英语不是很好,请原谅。

qqrboqgw

qqrboqgw1#

但它不起作用。
这并没有给我们足够的信息来帮助你。通常,您需要提供一条错误消息。我在本地构建了您的表,插入了数据,并尝试了您的方法。这是我看到的错误:

InvalidRequest: Error from server: code=2200 [Invalid query]
   message="Some partition key parts are missing: title"
``` `DELETE` 要求在中指定适当的主键组件 `WHERE` 条款。就你而言, `Authors` 不是主键定义的一部分。给定返回的错误消息(和表定义)指定 `title` 是从该表中删除行的唯一方法。

aploetz@cqlsh:stackoverflow> DELETE FROM Books
WHERE title = 'Harry Potter and the Chamber of Secrets'
IF EXISTS;

[applied]

  True
我能做这样的查询吗? `UPDATE Books SET Family = Family + {'Fantasy'} WHERE Authors CONTAINS 'J.K. Rowling';` 不,这个失败的原因也是一样的。cassandra中的写入(插入、更新、删除都是写入)需要 `WHERE` 条款。没有这些,cassandra就无法确定哪个节点保存数据,它需要这些数据来执行写操作。

相关问题