Un usuario encontró un desafío al intentar filtrar datos en MySQL usando la función COUNT(*) en la Cláusula WHERE. Buscaron un método eficiente para realizar esta tarea sin utilizar una instrucción SELECT anidada, ya que puede consumir recursos importantes.
El usuario presentó el siguiente pseudocódigo para ilustrar el resultado deseado:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
El problema con este enfoque es que MySQL no admite funciones agregadas, como COUNT(*), en la cláusula WHERE. Para evitar esta limitación, el usuario exploró la posibilidad de utilizar un SELECT anidado para contar el número de filas para cada gid único y luego filtrar los resultados en consecuencia. Sin embargo, este método se consideró ineficiente y consumía muchos recursos.
Afortunadamente, MySQL proporciona una solución más optimizada utilizando las cláusulas GROUP BY y HAVING:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
Esta consulta realiza los siguientes pasos:
Al aprovechar las cláusulas GROUP BY y HAVING, este enfoque logra efectivamente el resultado deseado sin recurrir a una instrucción SELECT anidada, lo que resulta en un mejor rendimiento y eficiencia.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3