Um usuário encontrou um desafio ao tentar filtrar dados no MySQL usando a função COUNT(*) na Cláusula WHERE. Eles buscaram um método eficiente para realizar essa tarefa sem usar uma instrução SELECT aninhada, pois ela pode consumir recursos significativos.
O usuário apresentou o seguinte pseudocódigo para ilustrar o resultado desejado:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
O problema com esta abordagem é que o MySQL não suporta funções agregadas, como COUNT(*), na cláusula WHERE. Para contornar essa limitação, o usuário explorou a possibilidade de usar um SELECT aninhado para contar o número de linhas de cada gid exclusivo e depois filtrar os resultados de acordo. No entanto, esse método foi considerado ineficiente e que consome muitos recursos.
Felizmente, o MySQL fornece uma solução mais otimizada usando as cláusulas GROUP BY e HAVING:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
Esta consulta executa as seguintes etapas:
Ao aproveitar as cláusulas GROUP BY e HAVING, essa abordagem atinge efetivamente o desejado resultado sem recorrer a uma instrução SELECT aninhada, resultando em melhor desempenho e eficiência.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3