我是 Cassandra 的新手。我想根据主键(即 timeuuid)获得排序的结果集。我的表结构是。
CREATE TABLE user_session
(
session_id timeuuid,
ip inet,
device_type int,
is_active int,
last_access_time timestamp,
logout_reason text,
logout_type int,
start_time timestamp,
uid int,
PRIMARY KEY(session_id)
);
谁能帮帮我。
最佳答案
您不能在主列的查询中使用 order by。它仅在集群列上受支持。您必须更改此表才能执行此类查询。它可能看起来像这样:
CREATE TABLE user_session
(
user_id int,
session_id timeuuid,
ip inet,
device_type int,
is_active int,
last_access_time timestamp,
logout_reason text,
logout_type int,
start_time timestamp,
uid int,
PRIMARY KEY(user_id, session_id)
);
然后,您的查询将如下所示:
select * from user_session where user_id=5 order by session_id ASC;
基本上,您需要一些主键,用于搜索仅允许EQ
和IN
关系的数据,因此您不能有user_id > 5
或类似的东西,然后您可以通过在您的情况下为 session_id
的聚类列对结果进行排序。
卓然
关于在 Cassandra 中按 timeuuid 类型的主键排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217129/