考虑 Cassandra 中的以下简单表,其中一些值通过 CQL3 插入:
CREATE TABLE sometable (
id varchar,
name varchar,
value varchar,
PRIMARY KEY (id, name));
INSERT INTO sometable (id, name, value) VALUES ('Mary', 'Favorite Color', 'Red');
INSERT INTO sometable (id, name, value) VALUES ('George', 'Favorite Color', 'Green');
INSERT INTO sometable (id, name, value) VALUES ('Bob', 'Favorite Color', 'Red');
INSERT INTO sometable (id, name, value) VALUES ('Mary', 'Phone', '555-1234');
INSERT INTO sometable (id, name, value) VALUES ('George', 'Phone', '555-1212');
INSERT INTO sometable (id, name, value) VALUES ('Bob', 'Email', 'bob@bob.com');
假设我们想要获取最喜欢红色的每个人的电话号码。例如,类似:
SELECT 'Phone' FROM sometable WHERE 'Favorite Color' = 'Red';
我能想到的唯一方法是选择所有感兴趣的列的名称,然后在客户端进行过滤:
SELECT name, value from sometable WHERE name IN ('Favorite Color', 'Phone') allow filtering;
有没有办法在 CQL 或任何其他 Cassandra API 中过滤动态列值?