CQL(Cassandra)仅选择列

时间:2017-06-27 16:28:20

标签: cassandra group-by cql nosql

除了CQL之外,这个问题与本文SQL Select only rows with Max Value on a Column基本相同。我正在使用Cassandra 3.10,因此支持GROUP BY,但HAVING和JOIN不支持。

与上述链接中的问题一样,我们需要在每个id中找到行(包括"内容"列),其中包含max(rev)。事实上,我试图解决的实际问题是通过两个标识符id1和id2进行max(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);

SELECT id1, id2, rev, content FROM table 
WHERE rev IN 
(SELECT MAX(rev) FROM table GROUP BY id1, id2)

(第二部作品假设rev是唯一的。)

没有HAVING或JOIN,在CQL或Cassandra 3.10中可行的方法是什么?

0 个答案:

没有答案