Right join: Оператор SQL RIGHT JOIN: примеры, синтаксис

MySQL ПРАВОЕ СОЕДИНЕНИЕ — javatpoint

следующий →
← предыдущая

Правое соединение используется для соединения двух или более таблиц и возвращает все строки из правой таблицы и только те результаты из другой таблицы, которые удовлетворяют условию соединения. Если он находит несопоставленные записи из левой таблицы, он возвращает значение Null. Это похоже на левое соединение, за исключением того, что оно дает обратный результат для таблиц соединения. Он также известен как правое внешнее соединение. Таким образом, Outer является необязательным предложением, используемым с Right Join.

Мы можем понять это с помощью следующего визуального представления, где Right Outer Join возвращает все записи из левой таблицы и только совпадающие записи из другой таблицы:

ПРАВОЕ СОЕДИНЕНИЕ Синтаксис

Ниже приведен синтаксис Right Join, который объединяет таблицы Table1 и Table2 :

ВЫБЕРИТЕ список_столбцов
ИЗ Таблицы1
ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ Таблица 2
ON условие_соединения;

ПРИМЕЧАНИЕ.

Если в правом соединении таблицы содержат одно и то же имя столбца, предложения ON и USING дают эквивалентные результаты.

Давайте посмотрим, как работает Right Join.

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

MySQL RIGHT JOIN Примеры

Давайте рассмотрим несколько примеров, чтобы понять работу предложения Right Join:

Предложение RIGHT JOIN для соединения двух таблиц

Здесь мы собираемся создать две таблицы « клиентов» и « заказов» , которые содержат следующие данные:

Таблица: клиенты

Таблица: заказы

Чтобы выбрать записи из обеих таблиц с помощью RIGHT JOIN, выполните следующий запрос:

ВЫБЕРИТЕ customers. customer_id, cust_name, цена, дата
ОТ клиентов
ПРАВИЛЬНОЕ ОБЪЕДИНЕНИЕ заказов НА customers.customer_id = orders.customer_id
ЗАКАЗАТЬ ПО customer_id;

ИЛИ,

ВЫБЕРИТЕ customers.customer_id, cust_name, цена, дата
ОТ клиентов
ПРАВИЛЬНОЕ СОЕДИНЕНИЕ заказов, ИСПОЛЬЗУЯ (customer_id)
ЗАКАЗАТЬ ПО customer_id;

После успешного выполнения вышеуказанных запросов он выдаст эквивалентный вывод:

ПРАВОЕ СОЕДИНЕНИЕ с WHERE Пункт

MySQL использует предложение WHERE для предоставления результата фильтра из таблицы. Следующий пример иллюстрирует это с предложением Right Join:

.

ВЫБЕРИТЕ * ОТ клиентов
ПРАВИЛЬНОЕ СОЕДИНЕНИЕ заказов, ИСПОЛЬЗУЯ (customer_id)
ГДЕ цена >2500 А цена

Этот оператор дает следующий результат:

MySQL RIGHT JOIN Несколько таблиц

Мы уже создали две таблицы с именами « клиентов» и « заказов» . Давайте создадим еще одну таблицу и назовем ее « контактов», который содержит следующие данные:

Выполните следующую инструкцию, чтобы объединить три таблицы клиентов, заказов и контактов:

ВЫБЕРИТЕ customers. customer_id, cust_name, order_id, цена, мобильный телефон
ОТ клиентов
ПРАВИЛЬНО ПРИСОЕДИНЯЙТЕСЬ к контактам ON customer_id = contact_id
ПРАВО ОБЪЕДИНЯЙТЕ заказы НА customers.customer_id = orders.customer_id ORDER BY order_id;

После успешного выполнения вышеуказанного запроса он выдаст следующий результат:

Использование предложения RIGHT JOIN для получения несовпадающих записей

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

Мы можем понять это на следующем примере, в котором используется предложение RIGHT JOIN для поиска клиента, у которого нет номера мобильного телефона :

ВЫБЕРИТЕ customer_id, cust_name, мобильный телефон, домашний телефон
ОТ клиентов
ПРАВИЛЬНО ПРИСОЕДИНЯЙТЕСЬ к контактам ON customer_id = contact_id
ГДЕ мобильный телефон НУЛЬ
ЗАКАЗАТЬ ПО МОБИЛЬНОМУ ТЕЛЕФОНУ;

Приведенный выше оператор возвращает следующий вывод:


Next TopicSQL CROSS JOIN

← предыдущая
следующий →

Можем ли мы заменить правое соединение левым соединением

SQL-скрипты, если вы хотите следовать примеру.

 Создать таблицу полов
(
     GenderID int первичный ключ,
     Пол nvarchar(50)
)
ИДТИ
Создать табличных сотрудников
(
     EmployeeID в первичном ключе,
     имя_сотрудника nvarchar(50),
     GenderID int ссылки на внешний ключ Полы (GenderID)
)
ИДТИ
Вставьте в значения «Пол» (1, «Мужской»)
Вставьте в значения «Пол» (2, «Женщина»)
Вставить в значения «Пол» (3, «Не указано»)
ИДТИ
Вставить в значения «Сотрудники» (1, «Отметить», 1)
Вставьте в значения «Сотрудники» (2, «Сара», 2)
Вставить в значения сотрудников (3, «Том», ноль)
ВПЕРЕД 

В этом видео мы обсудим, можем ли мы заменить RIGHT JOIN на LEFT JOIN и наоборот. Перед этим давайте быстро поймем, что сделают LEFT и RIGHT JOIN?

LEFT JOIN

LEFT JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы.

ПРАВОЕ СОЕДИНЕНИЕ

ПРАВОЕ СОЕДИНЕНИЕ возвращает все строки из правой таблицы и соответствующие строки из левой таблицы.

Почему таблицы называются ЛЕВАЯ и ПРАВАЯ таблицы

  1. Таблицы Employees и Genders объединяются в этом запросе.
  2. Что касается ключевого слова JOIN , таблица Employees находится слева, а таблица Genders — справа.
  3. Итак, в этом запросе Сотрудники — ЛЕВАЯ ТАБЛИЦА, а Пол — ПРАВАЯ ТАБЛИЦА.

СОЕДИНЕНИЕ или ВНУТРЕННЕЕ СОЕДИНЕНИЕ

ТИП СОЕДИНЕНИЯ, который у нас здесь, — ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Мы можем использовать INNER JOIN или просто JOIN. В обоих случаях мы получаем только совпадающие строки из обеих таблиц (LEFT и RIGHT).

LEFT JOIN или LEFT OUTER JOIN

Мы можем использовать либо LEFT JOIN, либо LEFT OUTER JOIN. Они одинаковые, возвращают все строки из левой таблицы и соответствующие строки из правой таблицы.

ПРАВОЕ СОЕДИНЕНИЕ или ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

Мы можем использовать либо ПРАВОЕ СОЕДИНЕНИЕ, либо ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ. Они одинаковые, возвращают все строки из правой таблицы и соответствующие строки из левой таблицы.

Внутреннее, левое и правое соединения

Можем ли мы заменить RIGHT JOIN на LEFT JOIN

Что ж, можем. Например, следующие 2 запроса дают один и тот же результат.

 ВЫБЕРИТЕ ID сотрудника, имя сотрудника, пол
ОТ сотрудников ПРАВО ПРИСОЕДИНЯТЬСЯ Пол
ON Сотрудники.GenderID = Полы.GenderID
ВЫБЕРИТЕ идентификатор сотрудника, имя сотрудника, пол
FROM Полы LEFT ПРИСОЕДИНЯЙТЕСЬ Сотрудники
ON Employees.GenderID = Genders.GenderID 

Просто поменяйте местами таблицы и используйте LEFT JOIN вместо RIGHT JOIN, и вы получите тот же результат. Даже с точки зрения производительности не должно быть никакой разницы. Нам действительно не нужно ПРАВОЕ СОЕДИНЕНИЕ.

Итак, вы можете задаться вопросом, тогда зачем нам ПРАВОЕ СОЕДИНЕНИЕ, когда мы можем получить тот же результат, используя ЛЕВО СОЕДИНЕНИЕ?

  • Ну, это своего рода вопрос, зачем нам нужно МЕНЬШЕ (<), когда у нас уже есть БОЛЬШЕ (>).
  • Иногда, в зависимости от желаемого вывода, особенно при объединении трех или более таблиц, может быть проще использовать комбинацию ЛЕВЫХ и ПРАВЫХ СОЕДИНЕНИЙ вместо только ЛЕВЫХ СОЕДИНЕНИЙ.