Назад к вопросам
Junior
76
questionbank

В чем различия между левым и правым соединением (LEFT JOIN и RIGHT JOIN) в SQL?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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.