Quais são as diferenças entre LEFT JOIN e RIGHT JOIN em SQL?
sobes.tech IA
Resposta da IA
LEFT JOIN devolve todas as linhas da tabela à esquerda (primeira) e as linhas correspondentes da tabela à direita (segunda). Se não houver correspondências na tabela da direita, o resultado contém NULL para as colunas da tabela da direita.
RIGHT JOIN devolve todas as linhas da tabela à direita (segunda) e as linhas correspondentes da tabela à esquerda (primeira). Se não houver correspondências na tabela da esquerda, o resultado contém NULL para as colunas da tabela da esquerda.
A principal diferença é qual tabela é considerada "completa", ou seja, de qual tabela serão devolvidas todas as linhas independentemente de existirem correspondências na outra tabela.
Exemplo em SQL:
Tabela TabelaA:
| ID | ValorA |
|---|---|
| 1 | A1 |
| 2 | A2 |
| 3 | A3 |
Tabela TabelaB:
| ID | ValorB |
|---|---|
| 2 | B2 |
| 3 | B3 |
| 4 | B4 |
LEFT JOIN:
SELECT *
FROM TabelaA
LEFT JOIN TabelaB ON TabelaA.ID = TabelaB.ID;
Resultado do LEFT JOIN:
| ID (de TabelaA) | ValorA | ID (de TabelaB) | ValorB |
|---|---|---|---|
| 1 | A1 | NULL | NULL |
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
RIGHT JOIN:
SELECT *
FROM TabelaA
RIGHT JOIN TabelaB ON TabelaA.ID = TabelaB.ID;
Resultado do RIGHT JOIN:
| ID (de TabelaA) | ValorA | ID (de TabelaB) | ValorB |
|---|---|---|---|
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
| NULL | NULL | 4 | B4 |
LEFT JOIN e RIGHT JOIN muitas vezes são intercambiáveis trocando a ordem das tabelas na consulta: A LEFT JOIN B é equivalente a B RIGHT JOIN A.