Je veux obtenir le nombre de lignes sélectionnées ainsi que les données sélectionnées. À l'heure actuelle, je dois utiliser deux instructions SQL:
l'un est
select * from XXX where XXX;
l'autre est
select count(*) from XXX where XXX;
Peut-il être réalisé avec une seule chaîne sql?
J'ai vérifié le code source de sqlite3, et j'ai trouvé la fonction de sqlite3_changes()
. Mais la fonction n'est utile que lorsque la base de données est modifiée (après insert, delete or update
).
Quelqu'un peut-il m'aider avec ce problème? Merci beaucoup!
essayez de cette façon
select (select count() from XXX) as count, *
from XXX;
SQL ne peut pas mélanger les résultats sur une seule ligne (comptage) et sur plusieurs lignes (sélection des données dans vos tables). Il s'agit d'un problème courant avec le retour d'énormes quantités de données. Voici quelques conseils pour gérer cela:
Lisez les N premières lignes et dites à l'utilisateur "plus de N lignes disponibles". Pas très précis mais souvent assez bon. Si vous gardez le curseur ouvert, vous pouvez récupérer plus de données lorsque l'utilisateur touche le bas de la vue (Google Reader le fait)
Au lieu de sélectionner directement les données, copiez-les d'abord dans une table temporaire. L'instruction INSERT renverra le nombre de lignes copiées. Plus tard, vous pouvez utiliser les données de la table temporaire pour afficher les données. Vous pouvez ajouter un "numéro de ligne" à cette table temporaire pour simplifier la pagination.
Récupérez les données dans un thread d'arrière-plan. Cela permet à l'utilisateur d'utiliser votre application pendant que la grille ou le tableau de données se remplit de plus de données.
select (select COUNT(0)
from xxx t1
where t1.b <= t2.b
) as 'Row Number', b from xxx t2 ORDER BY b;
essayez juste ceci .
Vous pouvez les combiner en une seule déclaration:
select count(*), * from XXX where XXX
ou
select count(*) as MYCOUNT, * from XXX where XXX
Une fois que vous avez déjà le select * from XXX
résultats, vous pouvez simplement trouver la longueur du tableau dans votre programme non?
Si tu utilises sqlite3_get_table
au lieu de préparer/étape/finaliser, vous obtiendrez tous les résultats à la fois dans un tableau ("tableau des résultats"), y compris le nombre et le nom des colonnes et le nombre de lignes. Vous devez ensuite libérer le résultat avec sqlite3_free_table
Pour obtenir le nombre de titres uniques, vous devez passer la clause DISTINCT à la fonction COUNT comme l'instruction suivante:
SELECT
COUNT(DISTINCT column_name)
FROM
'table_name';
Source: http://www.sqlitetutorial.net/sqlite-count-function/