3

使用下表定义:

CREATE TABLE device_by_create_date (
    year int,
    comm_nr text,
    created_at timestamp,
    PRIMARY KEY ((year, comm_nr), created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)

Comm_nr是唯一标识符。

我希望看到按created_at列排序的数据,而添加数据时并非如此。

示例条目:

表 CQL:

如何发出select * from table;查询,返回按created_at行排序的数据?

4

1 回答 1

4

TLDR:您需要创建一个新表。

您的分区键是(year, comm_nr). You're created_at 键是有序的,但它是在该分区键内订购的。SELECT * FROM table WHERE year=x AND comm_nr=y;将由 created_at 排序的查询。

此外,即使您的创建表语法仅将 created_at 指定为具有聚类顺序,而不是(year, comm_nr), created_at您的键,它也会被创建为. 数据在 SSTables 中按键从左到右排序。 year, comm_r, created_atWITH CLUSTERING ORDER BY (comm_nr DESC, created_at DESC)

以真正的 nosql 方式执行此操作的方法是在您的密钥所在的位置创建一个单独的表year, created_at, comm_nr。您将在创建用户时同时写信给两者,但如果您需要知道谁首先创建了他们的帐户的答案,您将改为查询新表。

于 2018-02-28T17:52:31.787 回答