Какви са разликите между LEFT JOIN и RIGHT JOIN в SQL?
sobes.tech AI
Отговор от AI
LEFT JOIN връща всички редове от левия (първия) таблица и съответните редове от десния (втория) таблица. Ако няма съвпадения в десния таблица, резултатът съдържа NULL за колоните от десния таблица.
RIGHT JOIN връща всички редове от десния (втория) таблица и съответните редове от левия (първия) таблица. Ако няма съвпадения в левия таблица, резултатът съдържа NULL за колоните от левия таблица.
Основната разлика е коя таблица се счита за "пълна", т.е. от коя таблица ще бъдат върнати всички редове независимо дали има съвпадения в другата таблица.
Пример в SQL:
Таблица ТаблицаA:
| ID | СтойностA |
|---|---|
| 1 | A1 |
| 2 | A2 |
| 3 | A3 |
Таблица ТаблицаB:
| ID | СтойностB |
|---|---|
| 2 | B2 |
| 3 | B3 |
| 4 | B4 |
LEFT JOIN:
SELECT *
FROM ТаблицаA
LEFT JOIN ТаблицаB ON ТаблицаA.ID = ТаблицаB.ID;
Резултат от LEFT JOIN:
| ID (от ТаблицаA) | СтойностA | ID (от ТаблицаB) | СтойностB |
|---|---|---|---|
| 1 | A1 | NULL | NULL |
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
RIGHT JOIN:
SELECT *
FROM ТаблицаA
RIGHT JOIN ТаблицаB ON ТаблицаA.ID = ТаблицаB.ID;
Резултат от RIGHT JOIN:
| ID (от ТаблицаA) | СтойностA | ID (от ТаблицаB) | СтойностB |
|---|---|---|---|
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
| NULL | NULL | 4 | B4 |
LEFT JOIN и RIGHT JOIN често са взаимозаменяеми чрез промяна на реда на таблиците в заявката: A LEFT JOIN B е еквивалентно на B RIGHT JOIN A.