CQLSH - 在MAP数据类型的where子句中检查null

时间:2015-10-15 10:22:51

标签: cassandra cqlsh

CASSANDRA版本:2.1.10

CREATE TABLE customer_raw_data (
  id uuid,
  hash_prefix bigint,
  profile_data map<varchar,varchar>
  PRIMARY KEY (hash_prefix,id));

我在profile_data上有一个索引,我有一行其中profile_data为空。

如何编写选择查询以检索profile_data为空的行?

我尝试了以下

select count(*) from customer_raw_data where profile_data=null;

select count(*) from customer_raw_data where profile_data CONTAINS KEY null;

3 个答案:

答案 0 :(得分:1)

enter image description here基本问题。 其中condition列必须是主键或辅助索引,因此请使您的列适合,然后尝试以下查询。 试试这个..

  

从customer_raw_data中选择count(*),其中profile_data =&#39;&#39;;

答案 1 :(得分:1)

参考:https://issues.apache.org/jira/browse/CASSANDRA-3783

目前没有对索引空值的选择支持,并且考虑到Cassandra的设计,被认为是一个困难/禁止的问题。

答案 2 :(得分:0)

SELECT * FROM TableName WHERE colName&gt; 5000允许过滤; //工作正常

SELECT * FROM TableName WHERE colName&gt; 5000限制10允许过滤;

https://cassandra.apache.org/doc/old/CQL-3.0.html

检查&#34;允许过滤&#34;部分。