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.