16

我正在我的项目中使用 Room 持久数据库。我有一个表,其中有一个布尔值列,如 0 或 1,现在我想要所有值为真(或 1)的布尔值的计数。

我知道我可以通过使用 where 子句获取所有选定行的计数来使用选择查询来实现这一点!

但我不想为此使用带有 where 子句的 Select 查询,因为它会加载所有行,然后我会得到计数,但我想要计数而不加载任何行!请提出其他简单的解决方案!谢谢!

4

2 回答 2

43

最后我得到了完美的解决方案!只需在DAO类中添加这个方法如下:

@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();

感谢 Florina Muntenescu 在https://medium.com/@florina.muntenescu

于 2018-01-05T13:42:42.530 回答
0

使用聚合函数sum可以帮助您:

select
    sum(
        case
            when t.VALUE = 1 then
                1
            else
                0
        end
    )
from
    table t

请注意,如果聚合字段没有索引,SQLite 引擎将读取整个表。如果表中只有很少的记录也没问题,否则最好考虑使用from索引字段的关键字。

于 2017-12-18T07:59:49.083 回答