values example mysql sql limit sql-limit

example - mysql count rows php



MySQL COUNT con LIMIT (1)

Así es como funciona su consulta y es un comportamiento normal. Al usar LIMIT no limitará el recuento o la suma, sino solo las filas devueltas. Por lo tanto, su consulta arrojará n filas como se indica en su cláusula LIMIT . Y dado que su consulta realmente solo devuelve una fila, la aplicación de un límite (distinto de cero) no tiene ningún efecto en los resultados.

Sin embargo, su segunda consulta funcionará como se espera y es una forma establecida de resolver este problema.

Lo que quiero hacer es SUMAR una columna, pero también CUENTAR el número de filas que está sumando, con un límite de no más de 5 filas. Entonces mi consulta es:

SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5

Lo que esperaba volver era un COUNT (*) hasta 5 (no puedo suponer que siempre será 5 en mi lógica de código ya que podría tener menos de 5 respuestas), con una suma del puntaje de hasta 5 filas.

En cambio, lo que parece recuperar es el número total de filas coincidentes (donde el usuario es 1) como el recuento, y la suma del puntaje para esas filas. Los números no cambian si pongo LIMIT 1 o LIMIT 5 o incluso LIMIT 50 .

Lo que creo que funcionará en esta situación es esto en cambio

SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a

Pero eso parece un poco intrincado para una consulta tan simple, y como está en un script de alto tráfico, quiero que sea lo más eficiente posible.

¿Me estoy perdiendo de algo? Encontré este informe de error de hace unos años que parece estar relacionado con este "problema", pero supongo que no es realmente un error.