Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在timeuuid类型主键上的Cassandra排序_Sorting_Cassandra - Fatal编程技术网

Sorting 在timeuuid类型主键上的Cassandra排序

Sorting 在timeuuid类型主键上的Cassandra排序,sorting,cassandra,Sorting,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 in

我是卡桑德拉的新手。我希望获得基于主键(即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)
);
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)
) WITH CLUSTERING ORDER BY (session_id ASC);
然后,您的查询将如下所示:

select * from user_session where user_id=5 order by session_id ASC;
基本上,您需要一些主键,用于搜索只允许
EQ
IN
关系的数据,因此您不能有
user\u id>5
或类似的内容,然后您可以通过集群列对结果进行排序,该列在您的案例中是
session\u id


Zoran

您可以使用ORDER BY from表定义,以便在插入过程中保持正确的顺序。
PRIMARY KEY
定义具有分区键
user\u id
和用于排序的集群列
session\u id
。它可能看起来像这样:

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)
);
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)
) WITH CLUSTERING ORDER BY (session_id ASC);