Sobes.tech
Junior

Какви са разликите между 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.