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

Какие существуют виды 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 Декартово произведение (все комбинации строк)