16

プロジェクトで Room 永続データベースを使用しています。0 または 1 のようなブール値の列があるテーブルがあります。値が true (または 1) であるすべてのブール値の数が必要です。

where句を使用して選択されたすべての行の数を取得することにより、選択クエリを使用してこれを達成できることを知っています!

ただし、すべての行をロードしてからカウントを取得するため、これに where 句を使用して Select クエリを使用したくありませんが、行をロードせずにカウントが必要です! 他の簡単な解決策を提案してください! ありがとうございました!

4

2 に答える 2

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 に答える