CQL(Cassandra)仅选择列上具有最大值的行

CQL(Cassandra)仅选择列上具有最大值的行,cassandra,group-by,cql,nosql,Cassandra,Group By,Cql,Nosql,这个问题本质上与本文相同,除了CQL。我正在使用Cassandra 3.10,因此支持GroupBy,但HAVING和JOIN不支持 正如上面链接中的问题一样,我们需要找到每个id中的行(包括“content”列),max(rev)。事实上,我试图解决的实际问题是通过两个标识符(id1和id2)最大化(rev)分组,因此按id排序在这里也不起作用 +------+-------+-------+--------------------------------------+ | id1 |

这个问题本质上与本文相同,除了CQL。我正在使用Cassandra 3.10,因此支持GroupBy,但HAVING和JOIN不支持

正如上面链接中的问题一样,我们需要找到每个id中的行(包括“content”列),max(rev)。事实上,我试图解决的实际问题是通过两个标识符(id1和id2)最大化(rev)分组,因此按id排序在这里也不起作用

 +------+-------+-------+--------------------------------------+
 | id1  | rev   |  id2  |  content                             |
 +------+-------+-------+------------------------------ -------+
 | 1    |  1    | 1     | ...                                  |
 | 1    |  2    | 1     | ...                                  |
 | 2    |  1    | 2     | ...                                  |
 | 1    |  3    | 3     | ...
 +------+-------+-------+--------------------------------------+
我为此提供的SQL解决方案是:

SELECT id1, id2, rev, content FROM table 
GROUP BY id1, id2 HAVING rev = MAX(rev);

(第二个工程假设版本是唯一的。)


如果没有或加入,CQL或Cassandra 3.10中的可行方法是什么?

假设id1和id2是主键
从表组中按id1选择id1、id2、MAX(rev),id2
应该可以工作,但我希望“内容”列也与该MAX(rev)相关,按聚合“content”分组的方式不能保证结果“content”值与max(rev)@undefined_变量在同一行中
SELECT id1, id2, rev, content FROM table 
WHERE rev IN 
(SELECT MAX(rev) FROM table GROUP BY id1, id2)