Je travaille avec la base de données persistante Room dans mon projet. J'ai une table dans laquelle il y a une colonne pour les valeurs booléennes comme dans 0 ou 1, maintenant je veux le nombre de toutes les valeurs booléennes dont la valeur est vraie (ou 1).
Je sais que je peux y parvenir en utilisant la requête de sélection en obtenant le nombre de toutes les lignes sélectionnées en utilisant la clause where!
Mais je ne veux pas utiliser la requête Select avec la clause where pour cela car cela chargera toutes les lignes et ensuite j'obtiendrai le nombre, mais je veux le nombre sans charger aucune ligne! Suggérez d'autres solutions simples s'il vous plaît! Merci!
Enfin, j'ai la solution parfaite! Ajoutez simplement cette méthode dans la classe DAO comme suit:
@Query("SELECT COUNT(is_checked) FROM table WHERE is_checked = 1")
int getNumberOfRows();
Tous nos remerciements à Florina Muntenescu à https://medium.com/@florina.muntenesc
L'utilisation de la fonction d'agrégation sum
peut vous aider:
select
sum(
case
when t.VALUE = 1 then
1
else
0
end
)
from
table t
Veuillez noter que le moteur SQLite lira la table entière, s'il n'est pas indexé par champ d'agrégation. Ce n'est pas un problème s'il n'y a que quelques enregistrements dans la table, sinon il vaut mieux envisager d'utiliser le mot clé from
des champs indexés.