Cassandra - 按主键更新所有记录,输入错误不匹配

时间:2017-05-14 07:10:42

标签: cassandra

我最近开始使用Cassandra,我知道Cassandra会阻止用户通过主键删除表中的所有记录。 因为您还需要提供所有群集密钥。

我尝试使用标准的sql,例如:

UPDATE my_table SET is_deleted = 'true' WHERE COUNTRY = 'XXX' AND user_id IN (SELECT user_id FROM my_table WHERE COUNTRY = 'XXX');

我得到的错误是:

SyntaxException: line 1:113 mismatched input 'SELECT' expecting ')' (... 1 AND user_id IN ([SELECT]...)

请告知。

1 个答案:

答案 0 :(得分:0)

您无法在cassandra中使用嵌套查询。

您必须使用两个单独的查询。

首先从user_id

中选择所有mytable
SELECT user_id FROM mytable WHERE COUNTRY = 'XXX'

秒对于前面步骤中找到的每个user_id

UPDATE my_table SET is_deleted = 'true' WHERE COUNTRY = 'XXX' AND user_id = 'XXX'

您可以使用executeAsync执行第二个查询。

如果user_id是分区键,您还可以在查询中使用更新,但建议使用小user_id列表

 UPDATE my_table SET is_deleted = 'true' WHERE COUNTRY = 'XXX' AND user_id in ('XXX', 'XXY', 'XXZ')
相关问题