SQL Server RIGHT JOIN

В этом руководстве вы узнаете, как использовать предложение SQL Server RIGHT JOIN для запроса данных из двух таблиц.

Введение в предложение SQL Server RIGHT JOIN

RIGHT JOIN — это предложение оператора SELECT. Предложение RIGHT JOIN объединяет данные из двух или более таблиц.

Предложение RIGHT JOIN начинает выбирать данные из правой таблицы и сопоставлять их со строками из левой таблицы. RIGHT JOIN возвращает результирующий набор, включающий все строки в правой таблице, независимо от того, есть ли у них совпадающие строки из левой таблицы.

Если строка в правой таблице не имеет соответствующих строк из левой таблицы, столбец левой таблицы в результирующем наборе будет содержать пустые значения.

Ниже показан синтаксис предложения RIGHT JOIN:

SELECT 
    select_list
FROM 
    T1
RIGHT JOIN T2 ON join_predicate;

В этом синтаксисе T1 — левая таблица, а T2 — правая таблица.

Обратите внимание, что RIGHT JOIN и RIGHT OUTER JOIN — это одно и то же. Ключевое слово OUTER необязательно.

Следующая диаграмма Венна иллюстрирует операцию RIGHT JOIN:

Иллюстрация RIGHT JOIN SQL Server

Пример ПРАВОГО СОЕДИНЕНИЯ SQL Server

Для демонстрации мы будем использовать таблицы sales.order_items и production.products из образца базы данных.

продукты order_items

Следующий оператор возвращает все order_id из таблицы sales.order_items и название продукта из таблицы production.products:

SELECT
    product_name,
    order_id
FROM
    sales.order_items o
    RIGHT JOIN production.products p 
        ON o.product_id = p.product_id
ORDER BY
    order_id;

Вот что получилось:

Пример ПРАВОГО СОЕДИНЕНИЯ SQL Server

Запрос вернул все строки из таблицы production.products(правая таблица) и строки из таблицы sales.order_items(левая таблица). Если у продукта нет продаж, столбец order_id будет иметь значение null.

Чтобы получить продукты, по которым нет продаж, добавьте предложение WHERE к приведенному выше запросу, чтобы отфильтровать продукты, по которым есть продажи:

SELECT
    product_name,
    order_id
FROM
    sales.order_items o
    RIGHT JOIN production.products p 
        ON o.product_id = p.product_id
WHERE 
    order_id IS NULL
ORDER BY
    product_name;

На следующем рисунке показан результат:

SQL Server RIGHT JOIN — строки только из правой таблицы

Следующая диаграмма Венна иллюстрирует приведенную выше операцию RIGHT JOIN:

SQL Server RIGHT JOIN — выбор только строк из правой таблицы

В этом руководстве вы узнали, как использовать SQL Server RIGHT JOIN для запроса данных из двух таблиц.

Мирослав С.

Автор статей, ИБ-специалист