Jaký je rozdíl mezi LEFT JOIN a RIGHT JOIN v SQL?
sobes.tech AI
Odpověď od AI
LEFT JOIN vrací všechny řádky z levého (prvního) tabulky a odpovídající řádky z pravého (druhého) tabulky. Pokud v pravé tabulce nejsou žádné shody, výsledek obsahuje NULL pro sloupce z pravé tabulky.
RIGHT JOIN vrací všechny řádky z pravé (druhé) tabulky a odpovídající řádky z levé (první) tabulky. Pokud v levé tabulce nejsou žádné shody, výsledek obsahuje NULL pro sloupce z levé tabulky.
Hlavní rozdíl je v tom, která tabulka je považována za "kompletní", tj. ze které tabulky budou vráceny všechny řádky bez ohledu na to, zda existují shody v druhé tabulce.
Příklad v SQL:
Tabulka TabulkaA:
| ID | HodnotaA |
|---|---|
| 1 | A1 |
| 2 | A2 |
| 3 | A3 |
Tabulka TabulkaB:
| ID | HodnotaB |
|---|---|
| 2 | B2 |
| 3 | B3 |
| 4 | B4 |
LEFT JOIN:
SELECT *
FROM TabulkaA
LEFT JOIN TabulkaB ON TabulkaA.ID = TabulkaB.ID;
Výsledek LEFT JOIN:
| ID (z TabulkaA) | HodnotaA | ID (z TabulkaB) | HodnotaB |
|---|---|---|---|
| 1 | A1 | NULL | NULL |
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
RIGHT JOIN:
SELECT *
FROM TabulkaA
RIGHT JOIN TabulkaB ON TabulkaA.ID = TabulkaB.ID;
Výsledek RIGHT JOIN:
| ID (z TabulkaA) | HodnotaA | ID (z TabulkaB) | HodnotaB |
|---|---|---|---|
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
| NULL | NULL | 4 | B4 |
LEFT JOIN a RIGHT JOIN jsou často zaměnitelné změnou pořadí tabulek v dotazu: A LEFT JOIN B je ekvivalentní s B RIGHT JOIN A.