MySql, combinar count(*) y Limit en una consulta - Developando.com

MySql, combinar count(*) y Limit en una consulta

En este breve consejo vamos a explicar como podemos utilizar en la misma consulta MySQL tanto COUNT(*) como LIMIT.

La primera idea que se nos ocurre a la hora de combinar ambas es hacer una consulta como la siguiente:

Con esto no estaríamos limitando el resultado de registros que se van a contar, sino el máximo número de registros que puede devolver esta consulta, que al tratarse de la sentencia COUNT(*) siempre será 1. Una vez visto que esta solución no es viable vamos a explicar cómo se debe hacer.

Qué es COUNT(*)

Utilizando COUNT(*) lo que obtendremos será un número con el total de la suma de registros devueltos en una consulta. Es decir, cuantos resultados se devuelven en una consulta. Por ejemplo, si ejecutamos esta consulta obtendremos el número total de personas mayores a una determinada edad:

Esto devolverá como resultado una fila con una columna llamada “TOTAL” cuyo valor será el número de personas mayores de 18 años.

Qué es LIMIT

Con “LIMIT” lo que se consigue en MySQL es limitar el número de resultados devueltos por una consulta. Por ejemplo, igual queremos hacer una consulta que nos devuelta las 10000 primeras personas cuya edad sea mayor de 18 años. Para esto, a la consulta anterior le añadiríamos el parámetro “LIMIT“, quedando la consulta de esta forma:

Esta consulta devolverá todos los datos únicamente de las 10000 primeras personas cuya edad sea mayor de 18 años.

El truco viene a la hora de combinar las dos consultas. Si queremos siguiendo el ejemplo obtener el número de personas mayores de 18, pero limitando siempre a que no sean más de 10000, podemos hacer la siguiente consulta MySQL:

Con esta consulta obtendríamos el número de personas mayores de 18 años, limitando a que el máximo sea 10000.

Share Button
David Otero

Sobre 

David Otero es uno de los creadores y desarrolladores que componen Developando. Puedes contactar con él en León, Zamora o Madrid.
Conoce a en Google+.

    Find more about me on:
  • facebook
  • googleplus
  • linkedin
  • twitter

Deja tu comentario

Loading Disqus Comments ...
Loading Facebook Comments ...