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:
1 |
SELECT COUNT(*) as TOTAL FROM personas WHERE personas.edad=18 LIMIT 0,10000; |
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:
1 |
SELECT COUNT(*) as TOTAL FROM personas WHERE personas.edad=18; |
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:
1 |
SELECT * FROM personas WHERE personas.edad=18 LIMIT 0,10000; |
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:
1 |
SELECT COUNT(*) AS TOTAL FROM( SELECT 1 FROM personas WHERE personas.edad=18 LIMIT 0,10000 ) t; |
Con esta consulta obtendríamos el número de personas mayores de 18 años, limitando a que el máximo sea 10000.
Deja tu comentario