Sobes.tech
Junior

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.