Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不使用SELECT查询的情况下获取Room持久化数据库中布尔值为true(或1)的行数?_Android_Database_Android Room_Boolean Operations_Booleanquery - Fatal编程技术网

Android 如何在不使用SELECT查询的情况下获取Room持久化数据库中布尔值为true(或1)的行数?

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

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

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


但我不想使用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,这是一个亮点!工作得很有魅力。