Cuidados ao usar Exists

6 meses depois do último post (e com o planejamento de ano novo completamente furado – o de postar pelo menos 1 vez a cada 15 dias… 🙁 )…
Dica rápida para quem usar EXISTS :
Nunca utilize uma função de agregação quando utilizar o EXISTS. Por quê?
Segue um script rápido que insere alguns poucos registros em uma tabela para testarmos…

“Estranho”, né?
Agora removam o count e executem novamente… Podem substituir o count por MIN, MAX, etc…
Viram o resultado?
Isso ocorre, pois toda a função de agregação retorna uma linha, sempre (O NULL é uma linha…), e o EXISTS verifica se a subconsulta retornou qualquer linha. Se retornou, é TRUE e portanto nunca vai executar o ELSE.
Vejam a diferença:

Ficou claro que um retorna uma linha e o outro não retorna nada? Ainda não?

Então, fica a dica…

Nunca utilize uma função de agregação quando utilizar o EXISTS.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.