SQL предоставляет нам оператор UNION, который позволяет нам объединять наборы результатов двух или более операторов SELECT в один набор результатов. В SQL существует три основных типа операторов UNION: UNION, UNION ALL и UNION DISTINCT.
В этом руководстве рассматриваются эти три типа ОБЪЕДИНЕНИЙ и приводятся реальные и практические примеры работы с ними.
ПРИМЕЧАНИЕ: В этом примере мы будем использовать образец базы данных Sakila в демонстрационных целях. Перед выполнением этих команд убедитесь, что он у вас установлен. Вы можете проверить наш учебник по этому, чтобы узнать больше.
Оператор СОЕДИНЕНИЯ SQL
Как уже упоминалось, оператор UNION позволяет нам объединить результирующий набор двух или более операторов select и удалить повторяющиеся значения. Синтаксис оператора UNION следующий:
ВЫБЕРИТЕ столбец1, столбец2,...
ИЗ таблицы1
СОЮЗ
ВЫБЕРИТЕ столбец1, столбец2,...
ИЗ таблицы2;
В синтаксисе предыдущего примера мы используем операторы SELECT для извлечения данных из указанных таблиц. Затем оператор UNION объединяет два набора результатов в один набор. Давайте возьмем пример того, как это сделать, используя таблицу акторов, определенную в базе данных Sakila.
Рассмотрим следующий пример запроса, который извлекает имя и фамилию актеров из таблицы актеров и таблицы клиентов:
ВЫБЕРИТЕ имя, фамилияОТ актера
СОЮЗ
ВЫБЕРИТЕ имя, фамилия
ОТ заказчика; ВЫБЕРИТЕ имя, фамилия
ОТ актера
СОЮЗ
ВЫБЕРИТЕ имя, фамилия
ОТ заказчика;
Предыдущий запрос изменяет имя и фамилию как из таблиц актеров, так и из таблиц клиентов и возвращает значения в виде единого результата.
Пример вывода выглядит следующим образом:
Оператор SQL UNION ALL
В отличие от оператора UNION, который удаляет повторяющиеся значения из набора результатов, оператор UNION возвращает все строки таблицы, включая дубликаты.
Синтаксис следующий:
ВЫБЕРИТЕ столбец1, столбец2,...ИЗ таблицы1
СОЮЗ ВСЕХ
ВЫБЕРИТЕ столбец1, столбец2,...
ИЗ таблицы2;
В следующем примере имя и фамилия выбираются из таблиц актеров и клиентов в базе данных Sakila:
ОТ актера
СОЮЗ ВСЕХ
ВЫБЕРИТЕ имя, фамилия
ОТ заказчика;
Пример вывода выглядит следующим образом:
Оператор SQL UNION DISTINCT
Другой тип оператора объединения — UNION DISTINCT. Этот оператор является просто дубликатом оператора UNION, который выполняет аналогичное действие.
Синтаксис следующий:
ВЫБЕРИТЕ столбец1, столбец2,...ИЗ таблицы1
СОЮЗ ОТЛИЧНЫЙ
ВЫБЕРИТЕ столбец1, столбец2,...
ИЗ таблицы2;
Операторы SELECT извлекают данные из указанных таблиц, а оператор UNION DISTINCT объединяет наборы результатов в один набор результатов, включающий уникальные строки.
В примере базы данных Sakila мы можем запустить следующую команду:
ВЫБЕРИТЕ имя, фамилияОТ актера
СОЮЗ ОТЛИЧНЫЙ
ВЫБЕРИТЕ имя, фамилия
ОТ заказчика;
Это должно вернуть результат, аналогичный оператору UNION.
Заключение
Мы научились работать с различными типами UNIONS в SQL. Оператор UNION объединяет результирующий набор двух или более операторов select и удаляет повторяющиеся записи. UNION ALL выполняет аналогичное действие, но включает все повторяющиеся строки. Наконец, UNION DISTINCT идентичен собственному оператору UNION.