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.