No artigo anterior, apresentamos como usar JOIN em instruções SQL para obter dados relacionados em várias tabelas e discutimos especificamente os princípios de junções internas, junções externas esquerda / direita / completa, junções cruzadas, junções naturais e autojunções E como usá-lo.
Além das consultas de junção, o SQL também fornece outra maneira de consultar várias tabelas ao mesmo tempo: Subconsulta. Neste artigo, daremos uma olhada em vários tipos de subconsultas e operadores relacionados.
O que é uma subconsulta?
Vamos primeiro considerar uma questão, quais funcionários têm um salário mensal maior do que o salário médio mensal de todos os funcionários? Você pode primeiro usar a função AVG para obter o salário médio mensal de todos os funcionários:
SELECT AVG(salary)
FROM employee;
AVG(salary)|
-----------|
9832.000000|
Em seguida, use o resultado da consulta como a condição de consulta da seguinte instrução para retornar os funcionários cujo salário mensal é maior que 9832:
SELECT emp_name, salary
FROM employee
WHERE salary > 9832;
O resultado desta declaração é o seguinte:
Usamos duas consultas para resolver esse problema simples, mas os requisitos em aplicativos reais são geralmente mais complicados; obviamente, precisamos de funções de consulta mais avançadas.
O SQL fornece um método de consulta chamado subconsulta, que pode resolver esse problema com muita facilidade:
SELECT emp_name, salary
FROM employee
WHERE salary > (
SELECT AVG(salary)
FROM employee
);