如何在不使用 SELECT 查询的情况下获取 Room 持久数据库中具有布尔值 true(或 1)的行数?
How can i get count of number of rows that have boolean value true(or 1) in Room persistent database without using SELECT query?
我在我的项目中使用 Room 持久数据库。我有一个 table,其中有一个布尔值列,如 0 或 1,现在我想要计算所有值为真(或 1)的布尔值。
我知道我可以使用 select 查询通过使用 where 子句获取所有 selected 行的计数来实现此目的!
但我不想为此使用带 where 子句的 Select 查询,因为它会加载所有行然后我会得到计数,但我想要计数而不加载任何行!请建议其他简单的解决方案!谢谢!
使用聚合函数sum
可能对您有帮助:
select
sum(
case
when t.VALUE = 1 then
1
else
0
end
)
from
table t
请注意,如果聚合字段没有索引,SQLite 引擎将读取整个 table。如果table中只有几条记录没问题,否则最好考虑使用索引字段的from
关键字。
终于找到了完美的解决方案!只需在 DAO class 中添加此方法,如下所示:
@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();
的 Florina Muntenescu
我在我的项目中使用 Room 持久数据库。我有一个 table,其中有一个布尔值列,如 0 或 1,现在我想要计算所有值为真(或 1)的布尔值。
我知道我可以使用 select 查询通过使用 where 子句获取所有 selected 行的计数来实现此目的!
但我不想为此使用带 where 子句的 Select 查询,因为它会加载所有行然后我会得到计数,但我想要计数而不加载任何行!请建议其他简单的解决方案!谢谢!
使用聚合函数sum
可能对您有帮助:
select
sum(
case
when t.VALUE = 1 then
1
else
0
end
)
from
table t
请注意,如果聚合字段没有索引,SQLite 引擎将读取整个 table。如果table中只有几条记录没问题,否则最好考虑使用索引字段的from
关键字。
终于找到了完美的解决方案!只需在 DAO class 中添加此方法,如下所示:
@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();
的 Florina Muntenescu