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