Select sql union: UNION (Transact-SQL) — SQL Server

SQL Union, Intersect и Except — Полное руководство

Предложения SQL UNION , SQL INTERSECT и SQL EXCEPT используются для объединения или исключения одинаковых строк из двух или более таблиц. Они полезны, когда вам нужно объединить результаты отдельных запросов в один результат. Они отличаются от объединения тем, что сопоставляются целые строки и в результате включаются или исключаются из объединенного результата.

Обзор

Эти операторы можно использовать в любом запросе; однако необходимо выполнить пару простых условий:

  1. Количество и порядок столбцов должны быть одинаковыми в обоих запросах
  2. Типы данных должны быть одинаковыми или совместимыми.

Содержание

  • Обзор
  • Оператор SQL UNION Set
    • Объединение строк таблицы с помощью SQL UNION
    • Объединение двух таблиц
    • SQL UNION против SQL UNION ALL
    • 9 0015 UNION три таблицы

  • SQL Intersect Set Operator
    • SQL Intersect Пример
    • Использование для SQL INTERSECT
    • Пересечение двух таблиц
    • Использование Order By с SQL INTERSECT
    • Эквивалентность SQL INTERSECT
  • SQL Except Set Operator
    • Пример SQL EXCEPT
    • Uses for SQL Ex cept
    • За исключением двух таблиц
    • Использование Order By с EXCEPT
    • SQL ЗА ИСКЛЮЧЕНИЕМ Эквивалентность
  • Использование скобок

Оператор набора SQL UNION

В этом разделе поговорим о SQL UNION оператор. Вы можете использовать предложение UNION для объединения строк таблицы из двух разных запросов в один результат.

Что такое SQL UNION?

В отличие от соединения, которое объединяет столбцов из разных таблиц, объединение объединяет строк из разных таблиц. Вот иллюстрация того, как выглядит SQL UNION

.

В SQL это выражение выглядит как

.

 ВЫБЕРИТЕ список столбцов
ИЗ таблицы1
СОЮЗ
ВЫБЕРИТЕ список столбцов
ИЗ таблицы2 

Чтобы объединить две таблицы, необходимо выполнить несколько требований:

  1. Количество столбцов должно быть одинаковым для обоих операторов выбора.
  2. Столбцы по порядку должны быть одного типа данных.

При объединении строк повторяющиеся строки удаляются. Если вы хотите сохранить все строки из результатов обоих операторов select, используйте ключевое слово ALL .

Узнайте больше: в чем разница между объединением и объединением >>

Объединение строк таблицы с помощью SQL UNION

Оператор Union возвращает строки из обеих таблиц. Используйте UNION, чтобы вернуть отдельный список значений. Используйте UNION ALL, чтобы вернуть отдельные строки. SQL UNION для сортировки результатов двух отдельных запросов в один объединенный результат. Например, если у вас есть две таблицы, Vendor и Customer, и вам нужен комбинированный список имен, вы можете легко сделать это, используя:

 ВЫБЕРИТЕ ‘Поставщик’, V.Name
ОТ поставщика V
СОЮЗ
ВЫБЕРИТЕ «Клиент», C.Name
ОТ Клиента С
ЗАКАЗАТЬ ПО Имя 

Обратите внимание, что предложение ORDER BY применяется к комбинированному результату.

Объединение двух столов

Предположим, вас попросили предоставить список всех категорий и подкатегорий продуктов AdventureWorks. Для этого вы можете написать два отдельных запроса и предоставить два отдельных результата, например две электронные таблицы, или вы можете использовать оператор SQL UNION для получения одного комбинированного результата:

 ВЫБЕРИТЕ C.Имя
ИЗ   Production.ProductCategory AS C
СОЮЗ ВСЕХ
ВЫБЕРИТЕ S. Имя
ОТ   Производство.Подкатегория Продукта AS S 

Отсюда вы получаете комбинированный список имен, но предположим, что вы хотите знать, какие имена относятся к категориям, а какие к подкатегориям. Для этого вы можете добавить новую колонку с указанием типа категории:

 ВЫБЕРИТЕ «категорию»,
       C.Имя
ОТ   Production.ProductCategory AS C
СОЮЗ ВСЕХ
ВЫБЕРИТЕ «подкатегорию»,
       S.Name
FROM   Production.ProductSubcategory AS S 

SQL UNION по сравнению с SQL UNION ALL

Разница между UNION и UNION ALL заключается в том, что UNION возвращает из результата уникальный набор строк; тогда как UNION ALL возвращает каждую строку.

 ВЫБЕРИТЕ человека.Адрес.Город
ОТ   человека.Адрес 

Возвращает 19614 строк.

 ВЫБЕРИТЕ человека.Адрес.Город
ОТ   человека.Адрес
  СОЕДИНЕНИЕ 
ВЫБЕРИТЕ человека.Адрес.Город
ОТ   человека.Адрес 

Возвращает 575 строк, то есть количество различных названий городов в таблице. Запуск SQL UNION All дважды возвращает весь набор названий городов:

 ВЫБЕРИТЕ человека.Адрес.Город
ОТ   человека.Адрес
  СОЕДИНЕНИЕ ВСЕ 
ВЫБЕРИТЕ человека.Адрес.Город
ОТ   человека.Адрес 

Возвращает 39228 строк.

Как видите, есть большая разница в использовании квалификатора ALL. Когда он не используется, результаты представляют собой различные значения. Дубликаты удаляются не только между строками каждого результата, но и внутри.

СОЕДИНЕНИЕ трех столов

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

Для этого мы создаем три отдельных запроса, а затем используем SQL UNIONclause, чтобы объединить их. Затем мы упорядочим список.

 ВЫБЕРИТЕ «Человек» КАК ИСТОЧНИК,
       Имя + ' ' + Фамилия КАК Имя
ОТ человека.Лицо
  СОЕДИНЕНИЕ 
ВЫБЕРИТЕ «Поставщик»,
       Имя
ОТ Закупки.Поставщик
  СОЕДИНЕНИЕ 
ВЫБЕРИТЕ «Магазин»,
       Имя
ОТ Sales. Store
ЗАКАЗАТЬ ПО имени; 

На первый взгляд может показаться, что предложение ORDER BY применимо только к последнему оператору select, но на самом деле оно применяется ко всем результатам, возвращаемым объединением sql. Механизм базы данных сначала обрабатывает все операторы объединения, а затем порядок.

Если вы сомневаетесь в порядке обработки, вы можете использовать круглые скобки «()», чтобы управлять порядком вычисления так же, как вы можете это делать с выражениями. Вот как в целом будет выглядеть оператор со скобками:

  (  ВЫБЕРИТЕ «Человек» КАК Источник,
       Имя + ' ' + Фамилия КАК Имя
ОТ человека.Лицо
СОЮЗ
ВЫБЕРИТЕ «Поставщик»,
       Имя
ОТ Закупки.Поставщик
СОЮЗ
ВЫБЕРИТЕ «Магазин»,
       Имя
ОТ Sales.Store  ) 
ЗАКАЗАТЬ ПО имени; 

Оператор набора пересечений SQL

Оператор SQL INTERSECT используется для объединения одинаковых строк из двух запросов. Он возвращает строки, которые являются общими для обоих результатов. Чтобы использовать оператор SQL INTERSECT, оба запроса должны возвращать одинаковое количество столбцов, и эти столбцы должны иметь совместимые типы данных.

В этом примере кружки обозначают два запроса. Оранжевый кружок — левый запрос; тогда как синий круг — это правильно. Область внутри каждого круга представляет результаты этого запроса.

Визуальное объяснение оператора Intersect

Как вы можете видеть, зеленая часть представляет результат оператора SQL INTERSECT. Эта область представляет те строки, которые есть как в левом, так и в правом запросе.

Пример пересечения SQL

Ниже приведен общий формат оператора INTERSECT.

 ВЫБЕРИТЕ Имя, Дату Рождения ОТ Сотрудника
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ имя, дату рождения ОТ клиента 

Есть два запроса, разделенных оператором SQL INTERSECT. Верхний запрос обычно называют левым запросом.

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

Сравните это с

 ВЫБЕРИТЕ Имя, Дату Рождения ОТ Сотрудника
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ возраст, дату рождения, имя из клиента 

Что недопустимо на нескольких уровнях. Во-первых, количество столбцов не то же самое. Кроме того, тип данных для каждого столбца несовместим. Например, Name, который представляет собой столбец Char, несовместим с типом данных Age.

Использование для SQL INTERSECT

Оператор пересечения удобен, когда вы хотите найти общие строки между двумя результатами. Оператор INTERSECT аналогичен оператору AND; однако они работают с разными объектами базы данных.

Оператор SQL Intersect используется для сравнения целых строк; тогда как оператор И используется для сравнения столбцов в строках.

Что сказать?

Не волнуйтесь, дальше станет понятнее.

Пересечение двух таблиц

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

Вот запрос для мужчин, запрос для женщин очень похож:

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources.Employee
ГДЕ Пол = "M" 

Чтобы закончить, нам нужно выяснить, какие титулы являются общими. Для этого мы можем использовать оператор SQL INTERSECT.

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources.Employee
ГДЕ Пол = 'M'
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ Должность
ОТ   HumanResources.Employee
ГДЕ Пол = 'F' 

У вас может возникнуть соблазн попытаться упростить это выражение, полностью исключив оператор INTERSECT и используя следующий

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources.Employee
ГДЕ Пол = 'M'
И Пол = 'F' 

Но так просто не получится. Почему? Поскольку предложение Where оценивается для каждой строки, и вы никогда не найдете значение пола, равное 9.0003 и M и F для той же записи .

Использование Order By с SQL INTERSECT

Чтобы упорядочить результат по JobTitle, мы можем использовать предложение ORDER BY. Имейте в виду, что это работает с последним набором строк, возвращаемым оператором процента.

 ВЫБЕРИТЕ   JobTitle
ОТ     HumanResources.Employee
ГДЕ    Пол = 'M'
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ   Должность
ОТ     HumanResources.Employee
ГДЕ    Пол = 'Ж'
ЗАКАЗ ПО JobTitle 

Эквивалент SQL INTERSECT

INTERSECT не всегда был частью SQL Server . До введения в язык вам приходилось имитировать поведение INTERSECT с помощью и INNER JOIN.

Ниже приведено эквивалентное утверждение для поиска общих названий должностей для обоих полов:

 ВЫБРАТЬ ОТЛИЧНОЕ M.JobTitle
ОТ   HumanResources.Employee AS M
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
HumanResources.Employee AS F
ON M.JobTitle = F.JobTitle
И М.Пол = 'М'
И F.Gender = 'F' 

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

ПРИМЕЧАНИЕ.  Эквивалентно баллу. КАК мы узнали, NULL не являются значениями, поэтому NULL = NULL всегда ложно. Учитывая это, INNER JOIN не соответствует соединениям; однако оператор SQL INTERSECT соответствует NULLS.

Вы обнаружите, что обычно существует более одного способа решения проблемы в SQL.

SQL кроме оператора набора

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

В этом примере кружки обозначают два запроса. Оранжевый кружок — левый запрос; тогда как синий круг — это правильно. Область внутри каждого круга представляет результаты этого запроса.

Как видите, оранжевый полумесяц (форма луны) представляет собой результат оператора EXCEPT. Эта область представляет те строки, которые находятся слева, а не в правом запросе.

SQL, ЗА ИСКЛЮЧЕНИЕМ Пример

Ниже приведен общий формат оператора EXCEPT.

 ВЫБЕРИТЕ Имя, Дату Рождения ОТ Сотрудника
КРОМЕ
ВЫБЕРИТЕ имя, дату рождения ОТ клиента 

Есть два запроса, разделенных оператором EXCEPT. Верхний запрос обычно называют левым запросом.

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

Сравните это с

 ВЫБЕРИТЕ Имя, Дату Рождения ОТ Сотрудника
КРОМЕ
ВЫБЕРИТЕ возраст, дату рождения, имя ОТ клиента 

Что недопустимо на нескольких уровнях. Во-первых, количество столбцов не то же самое. Кроме того, тип данных для каждого столбца несовместим. Например, Name, который представляет собой столбец Char, несовместим с типом данных Age.

Использование для SQL, кроме

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

За исключением двух таблиц

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

Вот запрос для мужчин, запрос для женщин очень похож:

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources.Employee
ГДЕ Пол = "M" 

Чтобы закончить, нам нужно выяснить, какие должности являются общими только для сотрудников-мужчин. Для этого мы можем использовать оператор EXCEPT.

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources.Employee
ГДЕ Пол = 'M'
КРОМЕ
ВЫБЕРИТЕ Должность
ОТ   HumanResources.Employee
ГДЕ Пол = 'F' 

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

 ВЫБЕРИТЕ Заголовок Работы
ОТ   HumanResources. Employee
ГДЕ Пол = 'M'
И НЕ Пол = 'F' 

Но так просто не получится. Почему? Поскольку предложение Where оценивается для каждой строки. Логически это предложение where вернет все должности для мужчин.

Использование Order By с КРОМЕ

Чтобы упорядочить результат по JobTitle, мы можем использовать предложение ORDER BY. Имейте в виду, что это работает с последним набором строк, возвращаемым оператором исключения.

 ВЫБЕРИТЕ   JobTitle
ОТ     HumanResources.Employee
ГДЕ    Пол = 'M'
КРОМЕ
ВЫБЕРИТЕ   Должность
ОТ     HumanResources.Employee
ГДЕ    Пол = 'Ж'
ЗАКАЗ ПО JobTitle 

SQL, ЗА ИСКЛЮЧЕНИЕМ Эквивалентность

Использование подзапроса

Оператор EXCEPT был недавно добавлен в SQL Server. Перед введением в язык вам приходилось имитировать поведение EXCEPT с помощью подзапроса.

 ВЫБЕРИТЕ   JobTitle
ОТ     HumanResources.Employee
ГДЕ    Пол = 'M'
КРОМЕ
ВЫБЕРИТЕ   Должность
ОТ     HumanResources.Employee
ГДЕ    Пол = 'Ж'
ЗАКАЗ ПО JobTitle 

Ниже приведено эквивалентное заявление для поиска должностей, занимаемых только мужчинами:

 ВЫБРАТЬ ОТЛИЧНОЕ M. JobTitle
ОТ   HumanResources.Employee AS M
ГДЕ M.Gender = 'M'
И M.JobTitle НЕ ВХОДИТ (ВЫБРАТЬ F.JOBTITLE
ОТ   HumanResources.Employee AS F
ГДЕ F.Gender = 'F') 

Я выделил подзапрос зеленым цветом. Мы еще не говорили о подзапросах, но поговорим в следующей серии статей. Как правило, подзапрос выполняется один раз для каждого результата, возвращаемого основным запросом. В этом примере, как только мы выбираем должность, занимаемую мужчиной (основной запрос), мы затем делаем другой запрос, спрашивая, принадлежит ли эта должность в наборе должностей женщинам (подзапрос). Если нет, то название должности сохраняется в результатах.

Использование внешнего соединения

Используйте оператор EXCEPT для возврата только строк, найденных в левом запросе. Он возвращает уникальные строки из левого запроса, которых нет в результатах правого запроса. Этот запрос полезен, когда вы хотите найти строки, которые находятся в одном наборе, но отсутствуют в другом. Например, чтобы создать список всех поставщиков, не являющихся клиентами, вы можете написать:

.

 ВЫБЕРИТЕ   JobTitle
ОТ     HumanResources.Employee
ГДЕ    Пол = 'M'
КРОМЕ
ВЫБЕРИТЕ   Должность
ОТ     HumanResources.Employee
ГДЕ    Пол = 'Ж'
ЗАКАЗАТЬ ПО JobTitle 

Как и INTERSECTION, EXCEPT имеет эквивалентный оператор SQL. В этом случае мы можем использовать OUTER JOIN для создания его эквивалента:

.

 SELECT Отдельный M.JobTitle
ОТ HumanResources.Employee M
       ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ HumanResources.Employee F
       ON M.Title = F.Title И F.Gender = 'F'
ГДЕ M.Gender = 'M'
ЗАКАЗ ПО M.JobTitle 

Использование скобок

С помощью этих операторов можно создавать сложные запросы. На самом деле ничто не мешает вам объединить один или несколько таких операторов в суперзапрос. Когда это будет сделано, обязательно используйте круглые скобки «()», чтобы контролировать, какие операторы оцениваются первыми.

Вам или другому читателю SQL может быть не очевидно, что

 ВЫБЕРИТЕ А ИЗ ТА
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ Б ИЗ ТБ
КРОМЕ
ВЫБЕРИТЕ C ИЗ ТБ
СОЮЗ
ВЫБЕРИТЕ D ИЗ ТД 

Вычисляется как

  ((  ВЫБЕРИТЕ ИЗ ТА
ПЕРЕСЕЧАТЬ
ВЫБЕРИТЕ B ИЗ ТБ  ) 
КРОМЕ
ВЫБЕРИТЕ C ИЗ TC  ) 
СОЮЗ
ВЫБЕРИТЕ D ИЗ ТД 

При отсутствии скобок порядок оценки следующий:

  1. INTERSECT
  2. EXCEPT и UNION оцениваются слева направо

Вы помните это?

Я рекомендую просто использовать круглые скобки и сделать их понятными. Хитрость — это кайф, но вы обожжетесь, если неправильно прочтете собственный код — поверьте мне в этом…

Из трех запросов оператор UNION незаменим. Нет другого способа объединить результаты двух запросов в один без использования UNION.

С другой стороны, как вы видели ранее, результаты как EXCEPT, так и INTERSECT могут быть воспроизведены с использованием OUTER и INNER JOINS соответственно. Фактически, вы обнаружите, что версия запросов JOIN работает более эффективно, чем EXCEPT и INTERSECT, и более универсальна, поскольку вы можете включать поля из левой таблицы, которых нет в правой.

Например,

 ВЫБЕРИТЕ V.Имя, V.Адрес
ОТ поставщика V
КРОМЕ
ВЫБЕРИТЕ C.Имя
ОТ Клиента С
ЗАКАЗАТЬ ПО Имени 

Неверно, так как количество столбцов в обоих запросах не совпадает, тогда как

 SELECT Различное имя V., адрес V.
ОТ поставщика V
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Клиент C
ON V.Name = C.Name
ГДЕ C.Name имеет значение NULL
ЗАКАЗАТЬ V.Name 

Действительно.

объединить результат двух или более операторов SELECT

Когда вы делаете запрос к базе данных, вам может понадобиться объединить результат двух или более операторов SELECT . Например, вы можете получить список городов, в которых базируются ваши клиенты, и городов, в которых у вашей компании есть филиалы. Вы можете выполнить два запроса для достижения этой цели, но вы можете захотеть получить результат в одном запросе.

Здесь на помощь приходит оператор SQL UNION . Предложение UNION может использоваться для объединения результатов двух или более SELECT запросов в один набор результатов.

Найдите подходящий учебный лагерь

  • Career Karma подберет для вас лучшие технологические учебные курсы
  • Доступ к эксклюзивным стипендиям и подготовительным курсам

Выберите интересующий вас вопрос
Разработка программного обеспеченияДизайнОбработка и анализ данныхАналитика данныхUX-дизайнКибербезопасностьИмя

Фамилия

Электронная почта

Номер телефона

Продолжая, вы соглашаетесь с нашими Условиями обслуживания и Политикой конфиденциальности, а также соглашаетесь получать предложения и возможности от Career Karma по телефону, текстовым сообщениям и электронной почте.

В этом руководстве мы рассмотрим основы оператора SQL UNION и обсудим, где вы можете использовать эту команду при работе с базой данных.

Обновление запросов

Программисты используют запросы для извлечения информации из базы данных. Запросы почти всегда начинаются с оператора SQL SELECT и используются для извлечения данных на основе набора критериев. Запросы обычно включают оператор FROM , который указывает, какая таблица будет запрошена, среди других операторов, которые могут фильтровать полученные данные.

Вот общий синтаксис запроса SQL :

 SELECT имя_столбца ИЗ имя_таблицы, ГДЕ ваши_условия_соответствуют; 

Вот пример запроса SQL , который возвращает список имен всех сотрудников:

 ВЫБЕРИТЕ имя ИЗ сотрудников; 

Результат нашего запроса выглядит следующим образом:

(7 строк)

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

SQL Union

Оператор SQL UNION можно использовать для объединения результатов двух или более запросов в один ответ, результатом которого является одна таблица.

Чтобы использовать оператор UNION , необходимо выполнить два условия. Во-первых, типы данных новых столбцов должны быть совместимыми — если зарплата является целым числом в одной таблице и числом с плавающей запятой в другой, объединение не сработает. Во-вторых, количество и порядок столбцов в ваших запросах должны быть одинаковыми.

Вот синтаксис запроса SQL UNION :

 SELECT имя_столбца ИЗ имя_таблицы1
UNION SELECT имя_столбца FROM имя_таблицы2; 

Давайте на примере проиллюстрируем, как работает оператор SQL UNION . Предположим, что мы являемся бизнесом, которому необходимо отправить объявление всем нашим клиентам. Мы также хотим, чтобы это объявление было отправлено всем сотрудникам, чтобы они были в курсе того, что происходит.

Мы могли бы использовать следующий запрос SQL , чтобы получить список электронных писем как наших клиентов, так и наших сотрудников, чтобы мы могли отправить им все объявления:

 ВЫБЕРИТЕ имя, электронную почту ОТ сотрудников
СОЮЗ ВЫБЕРИТЕ имя, адрес электронной почты ОТ клиентов; 

Вот результат нашего запроса:

(14 строк)

Как видите, наш запрос UNION вернул список всех имен и адресов электронной почты как наших клиентов, так и наших сотрудников.

Стоит отметить, что оператор UNION удаляет повторяющиеся строки из объединенного конечного результата. Это означает, что если бы один из наших сотрудников также был клиентом, мы увидели бы его информацию только один раз.

Хотя в приведенном выше примере это сработало, если вы хотите вернуть результат, включающий повторяющиеся строки, вам нужно добавить в запрос ключевое слово ALL . Вот пример:

 ВЫБЕРИТЕ имя, адрес электронной почты ОТ сотрудников
СОЮЗ ВСЕХ
ВЫБЕРИТЕ имя, адрес электронной почты ОТ клиентов; 

Заключение

В этом руководстве мы разобрали, как использовать оператор UNION на сервере SQL . Как мы уже говорили, UNION можно использовать для получения данных из двух таблиц и объединения ответов в одну таблицу. Например, если вы хотите получить список адресов ваших поставщиков и дистрибьюторов, которые хранятся в отдельных таблицах, вы можете использовать 9 адресов.0364 ОБЪЕДИНЕНИЕ запрос.

О нас: Career Karma — это платформа, предназначенная для помощи соискателям в поиске, исследовании и подключении к программам профессионального обучения для продвижения по карьерной лестнице. Узнайте о публикации CK.

Об авторе

Джеймс Галлахер

Менеджер по техническому содержанию в Career Karma

Джеймс Галлахер — программист-самоучка и технический контент-менеджер в Career Karma.