我正在我的项目中使用 Room 持久数据库。我有一个表,其中有一个布尔值列,如 0 或 1,现在我想要所有值为真(或 1)的布尔值的计数。
我知道我可以通过使用 where 子句获取所有选定行的计数来使用选择查询来实现这一点!
但我不想为此使用带有 where 子句的 Select 查询,因为它会加载所有行,然后我会得到计数,但我想要计数而不加载任何行!请提出其他简单的解决方案!谢谢!
我正在我的项目中使用 Room 持久数据库。我有一个表,其中有一个布尔值列,如 0 或 1,现在我想要所有值为真(或 1)的布尔值的计数。
我知道我可以通过使用 where 子句获取所有选定行的计数来使用选择查询来实现这一点!
但我不想为此使用带有 where 子句的 Select 查询,因为它会加载所有行,然后我会得到计数,但我想要计数而不加载任何行!请提出其他简单的解决方案!谢谢!
最后我得到了完美的解决方案!只需在DAO类中添加这个方法如下:
@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();
感谢 Florina Muntenescu 在https://medium.com/@florina.muntenescu
使用聚合函数sum
可以帮助您:
select
sum(
case
when t.VALUE = 1 then
1
else
0
end
)
from
table t
请注意,如果聚合字段没有索引,SQLite 引擎将读取整个表。如果表中只有很少的记录也没问题,否则最好考虑使用from
索引字段的关键字。