web-dev-qa-db-fra.com

Comment COUNT nombre de lignes avec LIMIT?

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 cellules col et le nombre de lignes. En fait, après avoir sélectionné les cellules col, il doit parcourir le tableau pour compter uniquement.

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.

8
Googlebot

Il semble que vous souhaitiez exécuter LIMIT, mais sachez toujours combien de lignes auraient été renvoyées sans LIMIT. Découvrez RANGÉES TROUVÉES

5
Alain Collins

Utilisez SQL_CALC_FOUND_ROWS Dans votre requête SELECT, puis exécutez SELECT FOUND_ROWS():

SELECT SQL_CALC_FOUND_ROWS field_name,filed_name2 FROM col WHERE CLAUSE LIMIT X;
SELECT FOUND_ROWS() ;
3
Dipa

Je sais que c'est un ancien mais il n'est plus valide, avec MySQL> = 8.0.17 cf MySQL Function Found_Rows () Donc nous devons encore émettre les deux requêtes ie. ajoutez-en un avec la COUNT(), malheureusement.

2
Fred