【问题标题】:CQL UPDATE a set<bigint> with join queryCQL UPDATE a set<bigint> with join 查询
【发布时间】:2022-01-20 15:24:21
【问题描述】:

我必须使用 CQL 从一个表中删除一些数据,该条件会从另一个表中获取数据。但我无法形成查询。

这是我需要从中删除数据的表格详细信息:

Table Name : xyz_group
Columns : dept_id [int] , sub_id [set<bigint>]
PRIMARY KEY (Partition key) : dept_id

多个 dept_id 可以有相同的 sub_id。数据如下:

dept_id     |     sub_id
-------------------------------
1098        |  345678298, 24579123, 8790455308
2059        |  398534698, 24579123, 8447659928
3467        |  311209878, 24579123, 8790455308, 987654321,

我只需要从所有行中删除 ---> 24579123, 8790455308

这是我的 SELECT 查询,它将从另一个表 abc_list 中获取数据,该表将从表 xyz_group 中删除

select sub_id from abc_list where sub_name='XYZ';

上述查询的输出将为我提供一个 sub_id 列表,我想将其从表 xyz_group 中删除。所以基本上我想通过从集合中删除数据来更新集合。如下所示:

UPDATE xyz_group SET sub_id = sub_id - [ query result from above select query ] WHERE dept_id in (1098, 2059, 3467, ...);

我试图从集合中删除一个元素,但出现以下错误:

UPDATE xyz_group SET sub_id = sub_id - [ 24579123 ] WHERE dept_id in (1098, 2059, 3467, ...);

Error : Column sub_id type set<bigint> is not compatible with type list<int>

这些表有大约 50k 条记录。任何人都可以帮助形成要更新的单个正确查询。

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    下面的查询现在对我有用:

    UPDATE xyz_group SET sub_id = sub_id - { 24579123 } WHERE dept_id in (1098, 2059, 3467, ...);
    

    但我正在执行两步过程来更新表格。首先收集所需的 sub_id,然后使用单独的 UPDATE 查询来更新表。不能在单个查询中完成。

    【讨论】:

      猜你喜欢
      • 2018-06-28
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多