我的table看起来像这样,
CREATE TABLE IF NOT EXISTS names (
firstname text,
surname text,
id text,
PRIMARY KEY (firstname, surname)
)
假设我想返回至少10个名字。我愿意
select * from names where firstname = "something" and surname "something";
但如果这只返回6个人,我希望它能:
select * from names where firstname = "something" limit 4;
但我想避免两次返回同一行。可能只在一个查询中执行。这可能吗?
2条答案
按热度按时间csga3l581#
您可以使用cqlsh的select“distinct”特性。您将获得分区的唯一值。更多详情请参阅以下文件rstanding:- https://docs.datastax.com/en/dse/5.1/cql/cql/cql\u参考/cql\u命令/cqlselect.html
mepcadol2#
例如,在java中,您可以依赖由驱动程序实现的分页。
在您的例子中,您可以执行查询,并使用
.setFetchSize
当对您需要的某个值执行特定的查询时—在本例中,驱动程序将读取大约指定的数字(或更少)作为第一页,如果您需要更多,则可以继续对结果进行迭代,并且驱动程序将获取下一页,直到您停止,或者不再有数据为止。但要非常小心页面的值太低—如果分区中有大量数据,那么驱动程序将需要经常访问cassandra,这将影响性能。
p、 你不能有10条记录可以查询
where firstname = "something" and surname = "something"
,因为两列都包含完整的主键,并且给定的主键只能有一条记录。你可以用where firstname = "something" and surname >= "something"
获取以给定姓氏开始的数据。