如何在不使用 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();

感谢 https://medium.com/@florina.muntenescu

的 Florina Muntenescu