我在Cassandra中有下表(CQL规范3.3.0):-
I have following table in Cassandra (CQL spec 3.3.0 ):-
Users: <a,b,c,d>, Primary key a Int, B: Map<Int,Date>用户表的列名称为 a,b,c,d 。现在,我想为b列为 null 的行选择所有列。我做了以下查询:-
Where Users table has column names as a,b,c,d. Now I want to select all the columns for the rows where column b is null. I did following query:-
select from Users where b = null;但这会失败,并显示错误= message =
but this fails with error = "message="Invalid null value in condition"
有什么方法可以解决?还是应该从所有行中选择所有列,然后以编程方式手动检查null,当然,对于大型数据库而言,效率非常低。
Is there any way to solve it? Or should I select all the columns from all the rows and manually check null programmatically, which of course would be very inefficient for a large database.
推荐答案Cassandra不支持基于null的查询,甚至f或二级索引。
Cassandra doesn't support querying based on null, even for secondary indexes.
您可以在表中添加另一个字段,例如 uninitialized,作为布尔值,当您首次插入该行时将其设置为true,然后将在未初始化字段上创建二级索引。
You could add another field to your table called something like "uninitialized" as a boolean that you set to true when you first insert the row, and you'd create a secondary index on the "uninitialized" field.
将地图设置为某些内容时,会将未初始化设置为false。然后要查找地图为空的行,请查询未初始化为true的行。
When you set the map to something, you would set "uninitialized" to false. Then to find the rows where the map is null, you'd query for rows where "uninitialized" is true.
更多推荐
选择Cassandra中列为空的行
发布评论