Pular para o conteúdo principal
Documentos
FunçõesExpressõesKeywordsDeclaraçõesCláusulas

Cláusula LEFT JOIN do MySQL

A cláusula `LEFT JOIN` no MySQL é usada para recuperar todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Se nenhuma correspondência for encontrada, o resultado será `NULL` da tabela correta.

Uso

A cláusula `LEFT JOIN` é normalmente usada quando você deseja incluir todas as entradas da tabela da esquerda e somente aquelas da tabela da direita que têm valores correspondentes. É particularmente útil para identificar registros sem correspondência na tabela correta.

SELECT columns
FROM left_table
LEFT JOIN right_table ON left_table.common_column = right_table.common_column;

Nessa sintaxe, `LEFT JOIN` especifica que todas as linhas de `left_table` são retornadas, com linhas correspondentes de `right_table` e `NULL` quando não houver correspondência. A presença de `NULL` indica que a linha correspondente na tabela correta não existe.

Exemplos

1. Básico LEFT JOIN

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Este exemplo recupera todos os funcionários e seus respectivos nomes de departamento. Se um funcionário não tiver um departamento atribuído, o nome do departamento será `NULL`, o que significa que não há registro correspondente na tabela `departments`.

2. LEFT JOIN com a cláusula WHERE

SELECT customers.customer_id, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.order_id IS NULL;

Aqui, a consulta busca todos os clientes que não fizeram nenhum pedido, verificando se há valores `NULL` no campo `order_id`, indicando registros não correspondentes.

3. Encadeamento de vários LEFT JOINs

SELECT students.name, courses.course_name, instructors.instructor_name
FROM students
LEFT JOIN enrollments ON students.student_id = enrollments.student_id
LEFT JOIN courses ON enrollments.course_id = courses.course_id
LEFT JOIN instructors ON courses.instructor_id = instructors.instructor_id;

Este exemplo mostra como encadear vários `LEFT JOINs` para obter uma visão completa de alunos, cursos e instrutores, mesmo que alguns alunos não estejam matriculados em nenhum curso.

Dicas e práticas recomendadas

  • Sempre especifique a condição de união. Defina claramente as colunas a serem unidas para evitar produtos cartesianos.
  • Use LEFT JOIN quando necessário. Opte por `LEFT JOIN` somente quando você precisar de todos os registros da tabela da esquerda, mesmo que não haja correspondências na tabela da direita.
  • Verifique se há NULLs. Use condições como `IS NULL` ou `IS NOT NULL` para identificar registros não correspondentes. Os valores `NULL` indicam que uma linha da tabela da direita não corresponde a nenhuma da esquerda.
  • Otimize com índices. Certifique-se de que as colunas de união sejam indexadas para melhorar o desempenho. Os índices ajudam a localizar rapidamente as linhas e a reduzir significativamente o tempo de execução da consulta.
  • Seja cauteloso com grandes conjuntos de dados. LEFT JOINs em tabelas grandes podem consumir muitos recursos; otimize as consultas para lidar com dados grandes de forma eficiente.
  • Considere o uso de INNER JOIN quando apropriado. Se você espera que todos os resultados desejados tenham correspondências em ambas as tabelas, um `INNER JOIN` pode ser mais eficiente e mais claro.

Aprimoramento de SQL para iniciantes

Adquira as habilidades de SQL para interagir com seus dados e consultá-los.
Comece a aprender de graça