考虑以下情况:
CREATE TABLE Stuff (
a int,
b text,
c text,
d text,
PRIMARY KEY (a,b,c)
);
在Cassandra中,这实际上创建了一个带有整数行(a的值)和由b和c的值以及字面字符串“d”组成的CompositeColumns的ColumnFamily。当然,所有这些都被CQL3所覆盖,以便我们认为我们正在插入单个数据库行...但我偏离了主题。
考虑以下一组输入:
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','P','whatever0');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','Q','whatever1');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','R','whatever2');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','S','whatever3');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','T','whatever4');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','P','whatever5');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','Q','whatever6');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','R','whatever7');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','S','whatever8');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','T','whatever9');
在我的当前使用情况下,我想一次读取所有“Stuff”的值,每次读取
n
个值。我该怎么做?这是我目前使用的n=4
的方法:SELECT * FROM Stuff WHERE a=1 LIMIT 4;
"并如预期,我得到了:
"
a | b | c | d
---+---+---+-----------
1 | A | P | whatever0
1 | A | Q | whatever1
1 | A | R | whatever2
1 | A | S | whatever3
我遇到的问题是如何获取接下来的4个?这是我的尝试:
SELECT * FROM Stuff WHERE a=1 AND b='A' AND c>'S' LIMIT 4;
这无法工作,因为我们已经限制b等于'A' - 这是一个合理的做法!但我在CQL3语法中找不到任何允许我继续迭代的方法。我希望我能做类似以下的操作:
SELECT * FROM Stuff WHERE a=1 AND {b,c} > {'A','S'} LIMIT 4;
我该如何达到我想要的结果?也就是说,我如何让CQL3返回:
a | b | c | d
---+---+---+-----------
1 | A | T | whatever0
1 | B | P | whatever1
1 | B | Q | whatever2
1 | B | R | whatever3