В SQL существует несколько видов JOIN:
INNER JOIN (или просто JOIN): Возвращает только те строки, для которых есть совпадения в обеих таблицах.
sql
LEFT JOIN (или LEFT OUTER JOIN): Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений в правой таблице нет, для столбцов из нее возвращается NULL.
sql
RIGHT JOIN (или RIGHT OUTER JOIN): Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений в левой таблице нет, для столбцов из нее возвращается NULL.
sql
FULL JOIN (или FULL OUTER JOIN): Возвращает все строки из обеих таблиц. Если совпадений нет, для столбцов из отсутствующей таблицы возвращается NULL.
sql
CROSS JOIN: Возвращает декартово произведение строк из обеих таблиц. Каждая строка из первой таблицы объединяется с каждой строкой из второй таблицы. Условие ON не требуется.
sql
Для наглядности можно представить их так:
| JOIN Type | Description |
|---|---|
INNER JOIN | Общие строки из обеих таблиц |
LEFT JOIN | Все строки из левой таблицы + совпадающие из правой |
RIGHT JOIN | Все строки из правой таблицы + совпадающие из левой |
FULL JOIN | Все строки из обеих таблиц (с NULL там, где нет совпадений) |
CROSS JOIN | Декартово произведение (все комбинации строк) |