我试图了解如何做到这一点,或者如果我不能,为什么我不能这样做。即
cqlsh:ps> create table s1 (a text, b text, stuff text, primary key(a,b));
cqlsh:ps> select * from s1 where a='a' and b=null;
Bad Request: Invalid null clustering key part b
似乎有一种解决方法,即不在“b”列中存储空值,但是类似“## null ##”,但这看起来很愚蠢。
非常感谢任何帮助。
答案 0 :(得分:4)
您无法将null
插入b
,因为它是群集密钥的一部分。如果您按照以下方式尝试插入查询:
INSERT INTO ps.s1 (a, b, c) VALUES ('a', null, 'c_val');
你应该得到一个例外:
Bad Request: Invalid null value for clustering key part password
如果您要检索a
= a
的所有数据,那么您只需执行以下操作:
select * from s1 where a='a';
但是,您可以将空值插入不属于该键的字段中:
INSERT INTO ps.s1 (a, b, c) VALUES ('a', 'b', null);