A palavra-chave OUTER JOIN no MySQL é usada para recuperar registros de duas tabelas, incluindo os registros que não têm valores correspondentes nas tabelas relacionadas. Ele garante que todos os registros de uma tabela sejam incluídos nos resultados e, quando nenhuma correspondência é encontrada, NULLs são preenchidos nas colunas da respectiva tabela.
Uso
OUTER JOIN é usado quando você precisa incluir todas as linhas de uma ou ambas as tabelas, independentemente de haver uma correspondência na outra tabela. Há dois tipos principais: LEFT OUTER JOIN (ou simplesmente LEFT JOIN) e RIGHT OUTER JOIN (ou simplesmente RIGHT JOIN).
SELECT columns
FROM table1
LEFT|RIGHTOUTERJOIN table2
ON table1.common_column = table2.common_column;Tecnologia
Nessa sintaxe, a palavra-chave LEFT|RIGHT OUTER JOIN determina quais linhas da tabela são totalmente preservadas no conjunto de resultados.
Observação sobre FULL OUTER JOIN
O MySQL não oferece suporte direto a FULL OUTER JOIN. No entanto, você pode obter resultados semelhantes usando uma combinação de LEFT JOIN e RIGHT JOIN com um UNION.
SELECT columns
FROM table1
LEFTJOIN table2 ON table1.common_column = table2.common_column
UNIONSELECT columns
FROM table1
RIGHTJOIN table2 ON table1.common_column = table2.common_column;Tecnologia
Exemplos
1. Básico LEFT OUTER JOIN
SELECT customers.customer_id, orders.order_id
FROM customers
LEFTOUTERJOIN orders ON customers.customer_id = orders.customer_id;Tecnologia
Essa consulta recupera todos os clientes e seus pedidos, se houver. Os clientes sem pedidos ainda aparecerão no resultado com NULL nas colunas de pedidos.
2. UNIÃO EXTERNA DIREITA
SELECT products.product_id, orders.order_id
FROM products
RIGHTOUTERJOIN orders ON products.product_id = orders.product_id;Tecnologia
Aqui, todos os pedidos são listados, inclusive aqueles para os quais não há entrada de produto correspondente, preenchendo NULL para obter detalhes do produto.
3. Combinação de LEFT JOIN com a cláusula WHERE
SELECT employees.employee_id, departments.department_name
FROM employees
LEFTJOIN departments ON employees.department_id = departments.department_id
WHERE departments.department_name ISNULL;Tecnologia
Essa consulta encontra funcionários não atribuídos a nenhum departamento, listando todos os funcionários e filtrando aqueles com nomes de departamentos NULL.
Dicas e práticas recomendadas
Escolha o tipo de união correto. Use LEFT JOIN quando você precisar de todos os registros da primeira tabela e RIGHT JOIN quando precisar de todos os registros da segunda tabela.
Tenha em mente o desempenho.OUTER JOIN operações podem ser dispendiosas em termos de desempenho; certifique-se de que os índices sejam usados nas colunas de união. A análise dos planos de execução de consultas pode ajudar a otimizar o desempenho.
Tenha cuidado com os NULLs. Considere como seu aplicativo ou as consultas subsequentes tratarão os valores NULL no conjunto de resultados. Use funções como IFNULL() ou COALESCE() para substituir NULL por valores padrão.
Use WHERE com cautela. Ao filtrar com WHERE, certifique-se de que ele não anule inadvertidamente o efeito do OUTER JOIN.
A palavra-chave
OUTER JOINno MySQL é usada para recuperar registros de duas tabelas, incluindo os registros que não têm valores correspondentes nas tabelas relacionadas. Ele garante que todos os registros de uma tabela sejam incluídos nos resultados e, quando nenhuma correspondência é encontrada, NULLs são preenchidos nas colunas da respectiva tabela.Uso
OUTER JOINé usado quando você precisa incluir todas as linhas de uma ou ambas as tabelas, independentemente de haver uma correspondência na outra tabela. Há dois tipos principais:LEFT OUTER JOIN(ou simplesmenteLEFT JOIN) eRIGHT OUTER JOIN(ou simplesmenteRIGHT JOIN).Nessa sintaxe, a palavra-chave
LEFT|RIGHT OUTER JOINdetermina quais linhas da tabela são totalmente preservadas no conjunto de resultados.Observação sobre FULL OUTER JOIN
O MySQL não oferece suporte direto a
FULL OUTER JOIN. No entanto, você pode obter resultados semelhantes usando uma combinação deLEFT JOINeRIGHT JOINcom umUNION.Exemplos
1. Básico LEFT OUTER JOIN
Essa consulta recupera todos os clientes e seus pedidos, se houver. Os clientes sem pedidos ainda aparecerão no resultado com
NULLnas colunas de pedidos.2. UNIÃO EXTERNA DIREITA
Aqui, todos os pedidos são listados, inclusive aqueles para os quais não há entrada de produto correspondente, preenchendo
NULLpara obter detalhes do produto.3. Combinação de LEFT JOIN com a cláusula WHERE
Essa consulta encontra funcionários não atribuídos a nenhum departamento, listando todos os funcionários e filtrando aqueles com nomes de departamentos
NULL.Dicas e práticas recomendadas
- Escolha o tipo de união correto. Use
- Tenha em mente o desempenho.
- Tenha cuidado com os NULLs. Considere como seu aplicativo ou as consultas subsequentes tratarão os valores NULL no conjunto de resultados. Use funções como
- Use WHERE com cautela. Ao filtrar com
```LEFT JOINquando você precisar de todos os registros da primeira tabela eRIGHT JOINquando precisar de todos os registros da segunda tabela.OUTER JOINoperações podem ser dispendiosas em termos de desempenho; certifique-se de que os índices sejam usados nas colunas de união. A análise dos planos de execução de consultas pode ajudar a otimizar o desempenho.IFNULL()ouCOALESCE()para substituirNULLpor valores padrão.WHERE, certifique-se de que ele não anule inadvertidamente o efeito doOUTER JOIN.