将来自社区的Apache Cassandra专家和DataStax聚集在一起。

想学习吗?有一个问题?想分享您的专业知识吗?你是在正确的地方!

不知道从哪里开始? 入门

 

问题

mishra.anurag643_153409头像图片
mishra.anurag643_153409 ·

是什么"主键的最后一个组成部分"什么时候使用IN运算符?

如果我需要用某些值更新某些列,并且需要在多行上进行此更改,在这种情况下,我可以将IN运算符与where子句一起使用。但是我正在查看文档,并提到了以下内容:

"要指定多个行,请使用primary_key_name IN(primary_key_value,primary_key_value…)。这仅适用于主键的最后一个部分。"

在上面我理解我们需要使用主键IN运算符,但是我感到困惑"这仅适用于主键的最后一个部分。"

上面的线在这里表示什么?

[编辑] Sample schema:

CREATE TABLE killrvideo.poc (
    id int,
    address text,
    name text,
    age text,
    education text,
    status text,
    PRIMARY KEY ((id, address), name, age)
) WITH CLUSTERING ORDER BY (name ASC, age ASC);
cqlsh:killrvideo> select * from poc;
 id | address | name | age | education | status
----+---------+------+-----+-----------+--------
  4 | satna   | RM   | 23  | BE        | Single
  1 | satna   | AM   | 27  | BE        | Single
  2 | satna   | RT   | 31  | BE        | Single
  3 | Pune    | AK   | 27  | BE        | Single

更新命令:

update poc set status = 'M' where age in ('27','31');

错误 :

InvalidRequest: Error from server: code=2200 [Invalid query] message="Some partition key parts are missing: id, address"
cql
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

1 回答

埃里克·拉米雷斯(Erick Ramirez)头像图片
埃里克·拉米雷斯(Erick Ramirez) 已回答 ·

主键可以包括:

  • 简单主键的分区键列
  • 复合分区键
  • 复合主键的分区键+聚类列

这里有些例子:

简单的主键

    PRIMARY KEY (email)

复合分区键

    PRIMARY KEY ((title, year))

复合主键

    PRIMARY KEY (stock_id, exchange_time)
    PRIMARY KEY ((album, year), track_number)

在主键仅包含分区键的情况下,最后一个组件只是分区键列。对于复合主数据库,最后一个组件是键中的最后一个聚类列。干杯!

[更新] The issue with your query is that you haven't specified all the columns in the primary. As the error states, there are parts of the primary key missing namely id and address.

您需要指定要更新的分区键以及所有群集列,以标识分区中的行。

有效查询为:

UPDATE poc
  SET status = ?
  WHERE id = ? AND address = ? AND name = ? AND age IN (...);
12 评论 分享
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

我对上面解释的概念很清楚,我的问题更具体地涉及当存在复合主键时使用IN运算符对多行进行更新的命令。请以一个示例说明当主键为复合主键时更新多行的示例。

0个赞 0 ·

我不确定哪一点不清楚。您可以将链接发布到您所引用的文档吗?

0个赞 0 ·

我已经更新了答案,以考虑示例架构和您提供的查询。干杯!

0个赞 0 ·