Sobes.tech
Junior

Jakie są różnice między LEFT JOIN a RIGHT JOIN w SQL?

sobes.tech AI

Odpowiedź od AI

LEFT JOIN zwraca wszystkie wiersze z lewej (pierwszej) tabeli oraz odpowiadające im wiersze z prawej (drugiej). Jeśli nie ma dopasowań w prawej tabeli, wynik zawiera NULL dla kolumn z prawej tabeli.

RIGHT JOIN zwraca wszystkie wiersze z prawej (drugiej) tabeli oraz odpowiadające im wiersze z lewej (pierwszej). Jeśli nie ma dopasowań w lewej tabeli, wynik zawiera NULL dla kolumn z lewej tabeli.

Główna różnica polega na tym, która tabela jest uważana za "pełną", czyli z której tabeli zostaną zwrócone wszystkie wiersze niezależnie od tego, czy istnieją dopasowania w drugiej tabeli.

Przykład w SQL:

Tabela TabelaA:

ID WartośćA
1 A1
2 A2
3 A3

Tabela TabelaB:

ID WartośćB
2 B2
3 B3
4 B4

LEFT JOIN:

SELECT *
FROM TabelaA
LEFT JOIN TabelaB ON TabelaA.ID = TabelaB.ID;

Wynik LEFT JOIN:

ID (z TabelaA) WartośćA ID (z TabelaB) WartośćB
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;

Wynik RIGHT JOIN:

ID (z TabelaA) WartośćA ID (z TabelaB) WartośćB
2 A2 2 B2
3 A3 3 B3
NULL NULL 4 B4

LEFT JOIN i RIGHT JOIN często są wymienialne przez zmianę kolejności tabel w zapytaniu: A LEFT JOIN B jest równoważne B RIGHT JOIN A.