Je veux attraper X lignes, donc je mets LIMIT X
; mais comment puis-je également compter simultanément le nombre total de lignes?
Actuellement, j'utilise deux requêtes distinctes pour le faire
SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X
Existe-t-il un moyen de le faire dans une seule requête?
EDIT: La sortie doit être les col
cellules et le nombre de lignes. En fait, après avoir sélectionné les col
cellules, il doit parcourir le tableau pour ne compter que.
Je sais qu'il n'est pas possible de fusionner ces deux requêtes, car la première renvoie 1 ligne, mais les secondes X lignes. Je suis curieux de savoir s'il existe une fonction dans mysql pour retourner le nombre de lignes en présence de LIMIT
.
Réponses:
Il semble que vous souhaitiez exécuter LIMIT, mais sachez toujours combien de lignes auraient été renvoyées sans LIMIT. Découvrez les lignes trouvées
la source
FOUND ROWS
, et bien qu'il exécute toujours deux requêtes, les performances peuvent être meilleures que l'exécution d'une deuxième COUNT (*) requête (selon les requêtes et le jeu de données).mysql
cela ne nous laissera pas seuls sur une question aussi importante;)Utilisez
SQL_CALC_FOUND_ROWS
dans votre requête SELECT, puis exécutezSELECT FOUND_ROWS()
:la source
Je sais que c'est une ancienne mais elle n'est plus valide, avec MySQL> = 8.0.17 cf Fonction MySQL Found_Rows () Donc nous devons encore émettre les deux requêtes ie. ajoutez-en un avec
COUNT()
, malheureusement.la source