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:
sql
Результат LEFT JOIN:
| ID (из ТаблицаA) | ЗначениеA | ID (из ТаблицаB) | ЗначениеB |
|---|---|---|---|
| 1 | A1 | NULL | NULL |
| 2 | A2 | 2 | B2 |
| 3 | A3 | 3 | B3 |
RIGHT JOIN:
sql
Результат 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.