Sobes.tech
Junior

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.