Оператор union: SQL — Оператор UNION
Содержание
SQL Оператор UNION
❮ Предыдущая Следующая Глава ❯
Оператор SQL UNION объединяет результат двух или более заявлений на SELECT.
SQL UNION Оператор
Оператор UNION используется для объединения множества результатов двух или более заявлений на SELECT.
Обратите внимание на то, что каждый оператор ЗЕЬЕСТ внутри Союза должны иметь одинаковое число столбцов. Столбцы также должны иметь одинаковые типы данных. Кроме того, столбцы в каждом ЗЕЬЕСТ должны быть в том же самом порядке.
SQL UNION Синтаксис
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2 ;
Note: Оператор UNION выбирает только различные значения по умолчанию. Чтобы разрешить повторяющиеся значения, используйте ключевое слово ALL с UNION.
SQL UNION ALL Синтаксис
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2 ;
PS: Имена столбцов в результатах запросов, союзной, как правило , равны именам столбцов в первом ЗЕЬЕСТ в Союзе.
Демо-версия базы данных
В этом уроке мы будем использовать хорошо известную базу данных Борей.
Ниже приводится подборка из «Customers» таблицы:
Пользовательский ИД | Имя Клиента | Контактное лицо | Адрес | город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
И выбор из «Suppliers» таблицы:
SupplierID | Наименование поставщика | Контактное лицо | Адрес | город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Экзотические Liquid | Шарлотта Купер | 49 Гилберта St. | Лондон | EC1 4SD | Великобритания |
2 | Новый Орлеан Cajun наслаждений | Shelley Берк | PO Box 78934 | Жители Нового Орлеана | 70117 | США |
3 | Homestead Бабушка Келли | Regina Мерфи | 707 Oxford Rd. | Ann Arbor | 48104 | США |
SQL UNION Пример
Следующий SQL — оператор выбирает все различные города (только отдельные значения) от «Customers» и «Suppliers» таблиц:
пример
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER
BY City;
Попробуй сам «
Note: UNION не может быть использован для просмотра списка всех городов из двух таблиц. Если несколько клиентов и поставщиков, одни и те же города, каждый город будет указан только один раз. UNION выбирает только определенные значения. Использование UNION ALL также выбрать повторяющиеся значения!
SQL UNION ALL Пример
Следующий SQL — оператор использует UNION ALL для выбора всех (значения дубликатов) также городов от «Customers» и «Suppliers» таблиц:
пример
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Попробуй сам «
SQL UNION ALL С WHERE
Следующий SQL — оператор использует UNION ALL для выбора всех (значения дубликатов) также немецкие города от «Customers» и «Suppliers» таблиц:
пример
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY
City;
Попробуй сам «
❮ Предыдущая Следующая Глава ❯
|
Смотреть материал на видео
На предыдущем
Предположим, у
Все эти записи
SELECT score, `from` FROM tab1 UNION SELECT val, type FROM tab2 Мы здесь
После выполнения
Имеем таблицу с
Но, если указать
SELECT score FROM tab1 UNION SELECT val FROM tab2 То результат уже
Здесь остались
Даже если в
100 tab1
то результат
SELECT score FROM tab1 увидим все
Если же у первой
UPDATE tab1 SET `from` = 'tab2' то исходный запрос:
SELECT score, `from` FROM tab1 UNION SELECT val, type FROM tab2 Приведет к
Смотрите, здесь тоже
Вернем записям
UPDATE tab1 SET `from` = 'tab1' И сформируем вот
SELECT score, 'table 1' as tbl FROM tab1 UNION SELECT val, 'table 2' FROM tab2 Смотрите, мы
Также можно
SELECT score, 'table 1' as tbl FROM tab1 UNION SELECT val, 'table 2' FROM tab2 ORDER BY score DESC Или, добавить фильтр
SELECT score, 'table 1' as tbl FROM tab1 WHERE score IN(300, 400) UNION SELECT val, 'table 2' FROM tab2 ORDER BY score DESC LIMIT 3 То есть, здесь
Видео по теме
Python SQLite #1: что такое СУБД и реляционные БД
Python SQLite #2: подключение к БД, создание и удаление таблиц
Python SQLite #3: команды SELECT и INSERT при работе с таблицами БД
Python SQLite #4: команды UPDATE и DELETE при работе с таблицами
Python SQLite #5: агрегирование и группировка GROUP BY
Python SQLite #6: оператор JOIN для формирования сводного отчета
Python SQLite #7: оператор UNION объединения нескольких таблиц
Python SQLite #8: вложенные SQL-запросы
Python SQLite #9: методы execute, executemany, executescript, commit, rollback и свойство lastrowid
Python SQLite #10: методы fetchall, fetchmany, fetchone, Binary, iterdump
|
Использование оператора Union
Содержание
- Введение
- Свойства: вкладка «Общие»
- Свойства: вкладка «Настройки объединения»
- Свойства: вкладка «Параллелизм»
- Связанные темы
Введение
Оператор Union принимает два или более входных потока и создает один выходной поток в порядке поступления кортежей. С
Настройка свободного объединения по умолчанию. Упорядочивание кортежей оператором объединения не зависит от значений полей, поступающих на его входные порты.
Если вы хотите упорядочить кортежи на основе значений полей (например, идентификаторов последовательности), рассмотрите возможность использования оператора слияния.
Допустим, вы установили StreamBase в магазине с 20 кассовыми очередями. После каждой продажи каждая касса выдает
в поток кортеж, содержащий сумму, количество товаров и имя кассира. Ваше приложение StreamBase должно
взять все данные со всех потоков и суммировать все продажи, чтобы магазин мог отслеживать общую сумму продаж
каждый час каждого дня. Оператор Union используется для объединения всех кассовых потоков в один поток, чтобы единый
Агрегатный оператор может использоваться для суммирования всех данных с каждой из касс.
Вы можете выбрать один из трех уровней совместимости схемы:
- Свободное объединение
По умолчанию кортежи, поступающие на разные входные порты, могут иметь разные схемы, если все поля имеют одинаковые имена.
имеют один и тот же тип данных. Когда во входном кортеже в одном потоке отсутствуют поля, которые существуют в другом входном порту, объединение
заполняет их пустыми полями. При этой настройке не учитывается порядок полей, в том числе порядок подполей кортежа.
поля.Например, можно выполнить свободное объединение двух входных потоков, схемы которых содержат следующие поля:
Следующие два события отображают выходные данные при поступлении данных на каждый порт:
- Строгий союз
В строгом объединении схемы должны иметь одни и те же поля с одинаковыми типами данных, и поля должны быть в одном порядке. Проверка типов
терпит неудачу, если входные потоки не имеют эквивалентных схем.Совет
Один из способов сделать схемы эквивалентными — использовать оператор Map перед оператором Union для изменения порядка полей.
- Объявленная схема
Вы можете объявить точную схему, которую должны иметь кортежи при выходе из оператора.
Оператор Union не пытается упорядочивать кортежи на своих входных портах на основе значений полей, а только рассматривает поступление кортежей
заказ. Таким образом, выходные данные напрямую отражают последовательность поступления кортежей во входных потоках. Например, рассмотрим
объединение двух потоков с одной и той же схемой, состоящей из одного поля int. Обратите внимание, что кортежи выводятся в порядке поступления.
порядок без учета значения в поле int:
Автоматическое управление портами
Перетащите дугу от вышестоящего компонента к нижнему левому краю оператора Union. Когда появится маленький золотой плюс, отпустите
курсор и перетащите на оператора. Это автоматически создает новый входной порт и увеличивает количество входных портов.
на вкладке «Настройки союза» представления «Свойства».
Когда вы удаляете дугу, вводя оператор Union, или удаляете компонент непосредственно перед такой дугой, соответствующий
входной порт автоматически удаляется из оператора Union, а количество входных портов на вкладке Union Settings уменьшается.
Свойства: вкладка «Общие»
Имя: Используйте это обязательное поле, чтобы указать или изменить имя этого экземпляра этого компонента, которое должно быть уникальным в текущем
Модуль EventFlow. Имя должно содержать только буквы алфавита, цифры и знаки подчеркивания, без дефисов и других специальных символов.
персонажи. Первый символ должен быть буквенным или символом подчеркивания.
Включить порт вывода ошибок. Установите этот флажок, чтобы добавить к этому компоненту порт вывода ошибок. На холсте EventFlow порт ошибки отображается красным цветом.
порт, всегда последний порт для компонента. См. Использование портов ошибок, чтобы узнать о портах ошибок.
Описание: При необходимости введите текст для краткого описания назначения и функции компонента. На холсте редактора EventFlow вы можете
посмотреть описание нажав Ctrl , пока отображается всплывающая подсказка компонента.
Свойства: вкладка «Настройки объединения»
Вкладка Union Settings имеет два элемента управления:
В поле Количество входных портов укажите количество потоков, которые будут участвовать в операции объединения.
В элементе управления сопоставлением схемы выберите один из параметров, описанных в следующей таблице:
Свойства: вкладка «Параллелизм»
Используйте вкладку «Параллелизм», чтобы указать использование параллельных регионов для этого экземпляра этого компонента. Рассмотрите возможность установки флажка параллельных регионов, если этот экземпляр компонента является длительным или требует больших вычислительных ресурсов, может работать без зависимостей данных от других StreamBase.
компонентов и не будет блокировать содержащий их модуль в ожидании возврата потока. В этом случае вы может улучшить производительность, выбрав эту опцию. Эта опция указывает серверу StreamBase обработать этот компонент.
одновременно с другой обработкой в приложении. Операционные системы, поддерживаемые StreamBase, автоматически распространяют
обработка потоков несколькими процессорами.
Осторожно
Настройка параллельных регионов подходит не для каждого приложения, и использование этой настройки требует тщательного анализа
ваше приложение. Дополнительные сведения см. в разделе Порядок выполнения и параллелизм, в котором содержатся важные рекомендации по использованию параметров параллелизма.
9
DB2 — оператор SQL UNION
Используя UNION, можно указать несколько операторов SELECT, а их результаты можно объединить в
единый результирующий набор.
UNION должен состоять из двух или более операторов SELECT, разделенных ключевым словом
СОЮЗ.
Каждый запрос в UNION должен содержать одни и те же столбцы, выражения или агрегатные функции
Типы данных столбцов должны быть совместимы.
Имена столбцов в результирующем наборе обычно совпадают с именами столбцов в первом операторе SELECT в UNION.
Синтаксис: UNION
ВЫБЕРИТЕ имя_столбца (ов) ИЗ таблицы 1 СОЮЗ ВЫБЕРИТЕ имя_столбца (ов) ИЗ таблицы2; |
UNION автоматически удаляет все повторяющиеся строки из набора результатов запроса.
Если вы хотите вернуть все вхождения всех совпадений, вы можете использовать UNION ALL.
Синтаксис: UNION ALL
ВЫБЕРИТЕ имя_столбца (ов) ИЗ таблицы 1 СОЮЗ ВСЕХ ВЫБЕРИТЕ имя_столбца (ов) ИЗ таблицы2; |
База данных DB2:
Давайте посмотрим на данные таблицы «Заказы» ниже:
Orderid 9020 3 | Номер клиента | Дата заказа | Город |
---|---|---|---|
1001 | 10 | 2020-09-08 | Лондон |
1002 | 99 | 2020-09-01 | Нью-Йорк | 1003 | 17 | 25. 08.2020 | Париж |
1004 | 76 | 2020-09-19 | Дубай |
1005 | 44 | 25.09.2020 | Сидней |
Давайте посмотрим на «Клиенты » Данные таблицы ниже:
Номер клиента | Имя клиента | Страна | Город |
---|---|---|---|
76 | Домкрат 900 41 | Америка | Нью-Йорк |
17 | Дженси | Германия | Калифорния |
20 | Кармен | Россия | Лондон |
10 | Роберт | Индия | Ньюдели |
99 | Брайан | Китай | Ченнаи |
Пример 1:
Следующая инструкция SQL возвращает города (только отдельные значения) из таблиц «Заказы» и «Клиенты».
ВЫБЕРИТЕ город ИЗ заказов СОЮЗ ВСЕХ ВЫБЕРИТЕ город ИЗ клиентов ЗАКАЗАТЬ ПО ГОРОДУ; |
Если «Заказы» или «Клиенты» имеют один и тот же город, каждый город будет указан только один раз, потому что UNION выбирает только разные значения. Используйте UNION ALL, чтобы включить повторяющиеся значения.
Результат:
Город |
---|
Калифорния |
Ченнаи |
Дубай |
Лондон |
Ньюдели |
Нью-Йорк |
Париж |
Сидней |
Если вы хотите вернуть все вхождения всех совпадений, вы можете использовать UNION ALL вместо UNION.
Пример 2:
Следующая инструкция SQL возвращает города (с дубликатами) из таблиц «Заказы» и «Клиенты».
ВЫБЕРИТЕ город ИЗ заказов СОЮЗ ВЫБЕРИТЕ город ИЗ клиентов ЗАКАЗАТЬ ПО ГОРОДУ; |
Если «Заказы» или «Клиенты» имеют один и тот же город, каждый город будет указан только один раз, потому что UNION выбирает только разные значения. Используйте UNION ALL, чтобы также выбрать повторяющиеся значения
Результат:
Город |
---|
Калифорния |
Ченнаи 9 0041 |
Дубай |
Лондон |
Лондон |
Ньюдели |
Нью-Йорк |
Нью-Йорк |
Париж |
Сидней |
Если у вас есть сомнения или вопросы, связанные с этой главой, обратитесь к нашим экспертам по мейнфреймам в сообществе ibmmainframer!
⇐ Предыдущий
⇑ Наверх
Далее ⇒
Copyright 2021 by ibmmainframer.