Какие существуют виды JOIN в SQL?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В SQL существует несколько видов JOIN:
-
INNER JOIN(или простоJOIN): Возвращает только те строки, для которых есть совпадения в обеих таблицах.SELECT * FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; -
LEFT JOIN(илиLEFT OUTER JOIN): Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений в правой таблице нет, для столбцов из нее возвращаетсяNULL.SELECT * FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name; -
RIGHT JOIN(илиRIGHT OUTER JOIN): Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений в левой таблице нет, для столбцов из нее возвращаетсяNULL.SELECT * FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name; -
FULL JOIN(илиFULL OUTER JOIN): Возвращает все строки из обеих таблиц. Если совпадений нет, для столбцов из отсутствующей таблицы возвращаетсяNULL.SELECT * FROM table1 FULL JOIN table2 ON table1.column_name = table2.column_name; -
CROSS JOIN: Возвращает декартово произведение строк из обеих таблиц. Каждая строка из первой таблицы объединяется с каждой строкой из второй таблицы. УсловиеONне требуется.SELECT * FROM table1 CROSS JOIN table2;
Для наглядности можно представить их так:
| JOIN Type | Description |
|---|---|
INNER JOIN |
Общие строки из обеих таблиц |
LEFT JOIN |
Все строки из левой таблицы + совпадающие из правой |
RIGHT JOIN |
Все строки из правой таблицы + совпадающие из левой |
FULL JOIN |
Все строки из обеих таблиц (с NULL там, где нет совпадений) |
CROSS JOIN |
Декартово произведение (все комбинации строк) |