如果表具有 SET 类型列,Cassandra IN 查询不起作用

2023-12-19

我是卡桑德拉的新手。我在 cassandra 查询中使用 IN 时遇到问题。

如果表没有 SET 类型的列,则它可以工作。

CREATE TABLE test (
    test_date bigint, 
    test_id bigint, 
    caption text,
    PRIMARY KEY(test_date,test_id)
);

select * from test where test_date = 2022015 and test_id IN (1,2);

但是如果我添加一列 SET 类型 f.e.tags set在上表中并重新运行选择查询,它给出错误。

CREATE TABLE test1 (
    test_date bigint, 
    test_id bigint, 
    tags set<text>,
    caption text,
    PRIMARY KEY(test_date,test_id)
);

select * from test1 where test_date = 2022015 and test_id IN (1,2);

code=2200 [无效查询] message="无法限制列“test_id” IN 关系作为集合由查询选择”


我不知道为什么这个限制应该特别适用于集合。但在您的情况下,您可以通过将测试作为分区键的一部分来解决此问题:

PRIMARY KEY((test_date,test_id))

只要指定组合键的第一部分(test_date),您就可以执行 IN 查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果表具有 SET 类型列,Cassandra IN 查询不起作用 的相关文章

随机推荐