Minicursos - MySQL

Having


O parâmetro HAVING permite selecionar resultados, assim como o parâmetro WHERE, mas ele atua sobre os dados agrupados com o GROUP BY. É um comando mais fácil de demonstrar do que de explicar. Sua sintaxe é muito simples. Vamos repetir a mesma consulta do último tópico, onde utilizamos o GROUP BY, vejam:

SELECT count(cpf) AS 'Qtde de Filmes Alugados', cpf AS CPF FROM aluga GROUP BY (cpf);

Executando, teremos:

Having MySQL

Agora vamos imaginar que nos interessasse somente os clientes que alugaram mais de 2 filmes. Não poderíamos usar o WHERE, já que a contagem é feita com o GROUP BY e isso geraria um erro de sintaxe, mas podemos usar o HAVING, da seguinte forma:

SELECT count(cpf) AS 'Qtde de Filmes Alugados', cpf AS CPF FROM aluga GROUP BY (cpf) HAVING (count(cpf)) > 2;

O resultado dessa consulta seria:

Having MySQL

Vejam que agora só foram exibidos os resultados maiores que 2, ou seja, clientes que alugaram mais de 2 filmes.

Resumindo, o HAVING tem o mesmo papel do WHERE, que é permitir uma triagem nos dados retornados, mas ele atua em conjunto com o GROUP BY.



Você gostará destes vídeos: