Sobes.tech
Junior

Qual é a diferença entre INNER JOIN e OUTER JOIN?

sobes.tech IA

Resposta da IA

INNER JOIN devolve apenas as linhas que têm correspondências em ambas as tabelas de acordo com a condição de junção. Se numa das tabelas não houver uma entrada correspondente, essa linha não aparecerá no resultado.

OUTER JOIN devolve todas as linhas de uma tabela e as correspondentes da outra, e se não houver correspondências, nos locais onde faltam dados aparecerão NULL. Existem três tipos de OUTER JOIN:

  • LEFT OUTER JOIN — todas as linhas da tabela da esquerda + as correspondentes da direita;
  • RIGHT OUTER JOIN — todas as linhas da tabela da direita + as correspondentes da esquerda;
  • FULL OUTER JOIN — todas as linhas de ambas as tabelas, onde não há correspondências, NULL.

Exemplo:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- retornará apenas os funcionários que têm departamento

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- retornará todos os funcionários, mesmo que não tenham departamento (nas colunas departments será NULL)