Quali sono le differenze tra LEFT JOIN e RIGHT JOIN in SQL?
sobes.tech AI
Risposta dell'AI
LEFT JOIN restituisce tutte le righe dalla tabella di sinistra (prima) e le righe corrispondenti dalla tabella di destra (seconda). Se non ci sono corrispondenze nella tabella di destra, il risultato contiene NULL per le colonne della tabella di destra.
RIGHT JOIN restituisce tutte le righe dalla tabella di destra (seconda) e le righe corrispondenti dalla tabella di sinistra (prima). Se non ci sono corrispondenze nella tabella di sinistra, il risultato contiene NULL per le colonne della tabella di sinistra.
La differenza principale è quale tabella viene considerata "completa", cioè da quale tabella verranno restituite tutte le righe indipendentemente dalla presenza di corrispondenze nell'altra tabella.
Esempio in SQL:
Tabella TabellaA:
| ID | ValoreA |
|---|---|
| 1 | A1 |
| 2 | A2 |
| 3 | A3 |
Tabella TabellaB:
| ID | ValoreB |
|---|---|
| 2 | B2 |
| 3 | B3 |
| 4 | B4 |
LEFT JOIN:
SELECT *
FROM TabellaA
LEFT JOIN TabellaB ON TabellaA.ID = TabellaB.ID;
Risultato LEFT JOIN:
| ID (da TabellaA) | ValoreA | ID (da TabellaB) | ValoreB |
|---|---|---|---|
| 1 | A1 | NULL | NULL |
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
RIGHT JOIN:
SELECT *
FROM TabellaA
RIGHT JOIN TabellaB ON TabellaA.ID = TabellaB.ID;
Risultato RIGHT JOIN:
| ID (da TabellaA) | ValoreA | ID (da TabellaB) | ValoreB |
|---|---|---|---|
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
| NULL | NULL | 4 | B4 |
LEFT JOIN e RIGHT JOIN sono spesso intercambiabili cambiando l'ordine delle tabelle nella query: A LEFT JOIN B è equivalente a B RIGHT JOIN A.