Android 如何在不使用SELECT查询的情况下获取Room持久化数据库中布尔值为true(或1)的行数?
我正在项目中使用Room持久数据库。我有一个表,其中有一列布尔值,如0或1,现在我想要所有布尔值的计数,其值为真(或1) 我知道我可以通过使用where子句获取所有选定行的计数,使用select查询实现这一点Android 如何在不使用SELECT查询的情况下获取Room持久化数据库中布尔值为true(或1)的行数?,android,database,android-room,boolean-operations,booleanquery,Android,Database,Android Room,Boolean Operations,Booleanquery,我正在项目中使用Room持久数据库。我有一个表,其中有一列布尔值,如0或1,现在我想要所有布尔值的计数,其值为真(或1) 我知道我可以通过使用where子句获取所有选定行的计数,使用select查询实现这一点 但我不想使用Select query with where子句,因为它将加载所有行,然后我将获得计数,但我希望计数不加载任何行!请建议其他简单的解决方案!谢谢大家! 使用聚合函数sum可以帮助您: select sum( case when
但我不想使用Select query with where子句,因为它将加载所有行,然后我将获得计数,但我希望计数不加载任何行!请建议其他简单的解决方案!谢谢大家! 使用聚合函数
sum
可以帮助您:
select
sum(
case
when t.VALUE = 1 then
1
else
0
end
)
from
table t
请注意,若并没有聚合字段索引,SQLite引擎将读取整个表。如果表中的记录很少,那么最好考虑从索引字段的关键字中使用<代码>。< /P> < P>最后,我得到了完美的解决方案!只需在DAO类中添加此方法,如下所示:
@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();
多亏了Florina Muntenescu,android上的标签是无用的here@NorthernPoet事实并非如此!因为android中使用了Room持久数据库!同意,抱歉误会,请详细说明答案好吗?我使用的是Room持久库,它不允许我在DAO类中使用@query注释编写此查询@北方诗人嘿,我又试过了!它通过一些间隔工作,并使用THEN关键字更正您的查询!非常感谢:)很高兴知道这对你有帮助。我做了一些编辑来添加详细信息,并为更多的用户更正了
中缺少的关键字。如果Value=1和Value=2我们需要2个计数怎么办?这是什么语法?作为参考,我相信感谢Wow,这是一个亮点!工作得很有魅力。