Sobes.tech
Junior

Aké sú rozdiely medzi LEFT JOIN a RIGHT JOIN v SQL?

sobes.tech AI

Odpoveď od AI

LEFT JOIN vracia všetky riadky z ľavej (prvej) tabuľky a zodpovedajúce riadky z pravej (druhej) tabuľky. Ak v pravej tabuľke nie sú žiadne zhody, výsledok obsahuje NULL pre stĺpce z pravej tabuľky.

RIGHT JOIN vracia všetky riadky z pravej (druhej) tabuľky a zodpovedajúce riadky z ľavej (prvej) tabuľky. Ak v ľavej tabuľke nie sú žiadne zhody, výsledok obsahuje NULL pre stĺpce z ľavej tabuľky.

Hlavný rozdiel je v tom, ktorá tabuľka je považovaná za "kompletnú", teda z ktorej tabuľky budú vrátené všetky riadky bez ohľadu na to, či existujú zhody v druhej tabuľke.

Príklad v SQL:

Tabuľka TabuľkaA:

ID HodnotaA
1 A1
2 A2
3 A3

Tabuľka TabuľkaB:

ID HodnotaB
2 B2
3 B3
4 B4

LEFT JOIN:

SELECT *
FROM TabuľkaA
LEFT JOIN TabuľkaB ON TabuľkaA.ID = TabuľkaB.ID;

Výsledok LEFT JOIN:

ID (z TabuľkaA) HodnotaA ID (z TabuľkaB) HodnotaB
1 A1 NULL NULL
2 A2 2 B2
3 A3 3 B3

RIGHT JOIN:

SELECT *
FROM TabuľkaA
RIGHT JOIN TabuľkaB ON TabuľkaA.ID = TabuľkaB.ID;

Výsledok RIGHT JOIN:

ID (z TabuľkaA) HodnotaA ID (z TabuľkaB) HodnotaB
2 A2 2 B2
3 A3 3 B3
NULL NULL 4 B4

LEFT JOIN a RIGHT JOIN sú často zameniteľné zmenou poradia tabuliek v dotaze: A LEFT JOIN B je ekvivalentné s B RIGHT JOIN A.