Cassandra中复合/复合主键的WHERE IN子句的语法是什么?
我有一个Cassandra表,它的复合/复合主键如下所示:PRIMARY KEY ((country, language), collectionid, instanceid)
如果我想返回具有相同国家和语言以及许多不同的集合ID和示例ID的许多行,那么这个表的WHERE IN子句应该是什么样子的?
会是这样的吗?还是说这行不通?有更好的办法吗?WHERE ((country, language, collectionid, instanceid)) IN (("us", "en", "aaa", "111"),("us", "en", "bbb", "222"),("us", "en", "bbb", "333"))
或者这样会更有表现力?WHERE country = "us" AND language="en" AND ((collectionid, instanceid)) IN (("aaa", "111"),("bbb", "222"),("bbb", "333"))
1条答案
按热度按时间57hvy0tb1#
所以第一个WHERE子句不起作用。如果你尝试过,你可能会看到这个错误:
[Invalid query] message=“多列关系只能应用于聚类列,但已应用于:国家”
第二个WHERE子句不做一些调整就无法工作。基本上,使用单引号而不是双引号,并且不要在IN子句上使用双括号:
这个查询可以工作,因为这里我们给了Cassandra一个特定的分区('en','us')来查看。