Select union mysql: UNION оператор MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Содержание
База Данных MySQL UNION Оператор
HTML5CSS.ru
ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
❮ Назад
Дальше ❯
Оператор Union SQL
Оператор UNION используется для объединения результирующего набора двух или более инструкций SELECT.
- Каждая инструкция SELECT внутри Union должна иметь одинаковое количество столбцов
- Столбцы также должны иметь схожие типы данных
- Столбцы в каждой инструкции SELECT также должны быть в том же порядке
UNION Синтаксис
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION ALL Синтаксис
Оператор Union выбирает по умолчанию только отдельные значения. Чтобы разрешить повторяющиеся значения, используйте объединение ALL:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Примечание: Имена столбцов в результирующем наборе обычно равны именам столбцов в первой инструкции SELECT в Union.
Демонстрационная база данных
В этом учебнике мы будем использовать хорошо известную базу данных Northwind Sample.
Ниже представлен выбор из таблицы «Customers»:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
И выбор из таблицы «Поставщики»:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly’s Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
Пример объединения SQL
Следующая инструкция SQL выбирает все различные города (только отдельные значения) от «Customers» и «поставщики»:
Пример
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Примечание: Если некоторые клиенты или поставщики имеют один и тот же город, то каждый город будет указан только один раз, поскольку Union выбирает только отдельные значения. Используйте UNION ALL для выбора повторяющихся значений!
SQL UNION все примеры
Следующая инструкция SQL выбирает все города (повторяющиеся значения также) от «Customers» и «поставщики»:
Пример
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
SQL UNION с где
Следующая инструкция SQL выбирает все различные немецкие города (только отдельные значения) от «Customers» и «поставщики»:
Пример
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY City;
SQL UNION все с где
Следующая инструкция SQL выбирает все немецкие города (повторяющиеся значения также) от «Customers» и «поставщики»:
Пример
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY City;
Другой пример объединения
В следующей инструкции SQL перечислены все клиенты и поставщики:
Пример
SELECT ‘Customer’ As Type, ContactName, City, Country
FROM Customers
UNION
SELECT ‘Supplier’, ContactName, City, Country
FROM Suppliers;
❮ Назад
Дальше ❯
PHP\CSS\JS\HMTL Editor
Copyright 2018-2020 HTML5CSS. ru
Правила и Условия Политика конфиденциальности
О нас
Контакты
SQL UNION — оператор для объединения результатов запросов
Навигация по уроку
- Итоги и индивидуальные значения в одной таблице с помощью оператора SQL UNION
- Другие случаи объединения запросов к одной таблице с помощью оператора SQL UNION
- Объединение результатов запросов к двум таблицам с помощью оператора SQL UNION
- Объединение результатов сложных запросов
Связанные темы
- Оператор SELECT
- Реляционная алгебра и её операции
Назад | Содержание | Вперёд>>> |
Оператор языка SQL UNION предназначен для объединения результирующих таблиц базы данных, полученных
с применением слова SELECT. Условие объединения результирующих таблиц: совпадение числа, порядка
следования и типа данных столбцов. ORDER BY следует применять к результату объединения и размещать только в конце составного запроса.
Оператор UNION имеет следующий синтаксис:
SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
UNION
SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
В этой конструкции объединяемые запросы могут иметь условия в секции WHERE, а могут не иметь их.
При помощи оператора UNION можно объединить запросы на извлечение данных как из одной таблицы, так и
из разных.
При использовании оператора UNION без слова ALL результат не содержит дубликатов, а со словом ALL —
содержит дубликаты.
Одним запросом можно вывести из таблицы индивидуальные значения столбцов, например, число лет, проработанных
сотрудниками фирмы, размеры их заработной платы и другие. Другим запросом — с использованием
агрегатных функций — можно получить,
например, сумму заработных плат, получаемых сотрудниками отделов или занимающих те или иные должности, или
среднее число лет трудового стажа
(в таких запросах применяется группировка с помощью оператора GROUP BY).
А если нам требуется получить в одной таблице и сводку всех индивидуальных значений, и итоговые значения?
Здесь на помощь приходит оператор SQL UNION, с помощью которого два запроса объединяются. К результату
объединения требуется применить упорядочение, используя оператор ORDER BY. Для чего это необходимо,
будет лучше понятно из примеров.
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД
не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.
Пример 1. В базе данных фирмы есть таблица Staff, содержащая
данные о сотрудниках фирмы. В ней есть столбцы
Salary (размер заработной платы), Job (должность) и Years (длительность трудового стажа).
Первый запрос возвращает индивидуальные размеры заработной платы, упорядоченные по должностям:
SELECT Name, Job, Salary
FROM STAFF ORDER BY Job
Результатом выполнения запроса будет следующая таблица:
Name | Job | Salary |
Sanders | Mgr | 18357. 5 |
Marenghi | Mgr | 17506.8 |
Pernal | Sales | 18171.2 |
Doctor | Sales | 12322.4 |
Factor | Sales | 16228.7 |
Второй запрос вернёт суммарную заработную плату по должностям. Мы уже готовим этот запрос
для соединения с первым, поэтому будем помнить, что условием соединения является равное число столбцов,
совпадение их названий, порядка следования и типов данных. Поэтому включаем в таблицу с итогами также
столбец Name с произвольным значением ‘Z-TOTAL’:
SELECT ‘Z-TOTAL’ AS Name, Job, SUM(Salary) AS Salary
FROM STAFF GROUP BY Job
Результатом выполнения запроса будет следующая таблица:
Name | Job | Salary |
Z-TOTAL | Mgr | 35864.3 |
Z-TOTAL | Sales | 46722.3 |
Теперь объединим запросы при помощи оператора UNION и применим оператору ORDER BY
к результату объединения. Группировать следует по двум столбцам: должность (Job) и имя (Name), чтобы
строки с итоговыми (суммарными) значениями, в которых значение имени — ‘Z-TOTAL’, находились ниже строк
с индивидуальными значениями. Объединение результатов запросов будет следующим:
(SELECT Name, Job, Salary
FROM STAFF)
UNION
(SELECT ‘Z-TOTAL’ AS Name,
Job, SUM(Salary) AS Salary
FROM STAFF GROUP BY Job)
ORDER BY Job, Name
Результатом выполнения запроса с оператором UNION будет следующая таблица, в которой
каждая первая строка в каждой группе должностей будет содержать суммарную заработную плату
сотрудников, работающих на этой должности:
Name | Job | Salary |
Marenghi | Mgr | 17506.8 |
Sanders | Mgr | 18357.5 |
Z-TOTAL | Mgr | 35864.3 |
Doctor | Sales | 12322.4 |
Factor | Sales | 16228. 7 |
Pernal | Sales | 18171.2 |
Z-TOTAL | Sales | 46722.3 |
Написать запросы с использованием UNION самостоятельно, а затем посмотреть решение
Пример 2. Данные — те же, что в примере 1, но задача немного
посложнее. Требуется вывести в одной таблице не только индивидуальные размеры заработной платы,
упорядоченные по должностям и суммарную заработную плату по должностям, но суммарную заработную плату
по всем сотрудникам.
Правильное решение.
Пример 3. В базе данных фирмы есть таблица Staff, содержащая
данные о сотрудниках фирмы. В ней есть столбцы
Name (фамилия), Dept (номер отдела), и Years (длительность трудового стажа).
Name | Dept | Years |
Sanders | 20 | 7 |
Pernal | 20 | 8 |
Marenghi | 38 | 5 |
Doctor | 20 | 5 |
Factor | 38 | 8 |
Вывести в одной таблице
средний трудовой стаж по отделам и индивидуальные значения длительности трудового стажа сотрудников,
сгруппированных по номерам отделов.
Правильное решение.
Пример 4. В базе данных фирмы есть таблица Staff, содержащая
данные о сотрудниках фирмы. В ней есть столбцы
Salary (размер заработной платы), Job (должность) и Years (длительность трудового стажа).
Первый запрос нужен для получения данных о сотрудниках, заработная плата которых более 21000:
SELECT ID, Name
FROM STAFF WHERE SALARY > 21000
Результатом выполнения запроса будет следующая таблица:
ID | Name |
140 | Fraye |
160 | Molinare |
260 | Jones |
Второй запрос возвращает имена сотрудников, должность которых «менеждер», а число
лет трудового стажа — менее 8:
SELECT ID, Name
FROM STAFF WHERE Job = ‘Mgr’ AND Years
Результатом выполнения запроса будет следующая таблица:
ID | Name |
10 | Sanders |
30 | Marenghi |
100 | Plotz |
140 | Fraye |
160 | Molinare |
240 | Daniels |
Теперь требуются данные, в которых объединены критерии отбора, применённые в двух
запросах. Объединяем запросы при помощи оператора UNION:
SELECT ID, Name
FROM STAFF WHERE SALARY > 21000
UNION
SELECT ID, Name
FROM STAFF WHERE Job = ‘Mgr’ AND Years
Результатом выполнения запроса с оператором UNION будет следующая таблица:
ID | Name |
10 | Sanders |
30 | Marenghi |
100 | Plotz |
140 | Fraye |
160 | Molinare |
240 | Daniels |
260 | Jones |
Запрос с оператором UNION может возвращать и большее количество столбцов, важно, повторимся, чтобы в объединяемых
запросах число столбцов,
порядок их следования и типы данных совпадали.
Теперь работаем с базой данных «Портал объявлений — 1». Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных —
в файле по этой ссылке
Пример 5. Есть база данных портала объявлений.
Пусть сначала требуется получить данные о категориях и частях категорий объявлений,
в которых подано более 100 объявлений в неделю. Пишем следующий запрос:
SELECT Category, Part, Units, Money
FROM ADS WHERE Units > 100
Результатом выполнения запроса будет следующая таблица:
Category | Part | Units | Money |
Транспорт | Автомашины | 110 | 17600 |
Транспорт | Мотоциклы | 131 | 20960 |
Электротехника | Телевизоры | 127 | 8255 |
Электротехника | Холодильники | 137 | 8905 |
Стройматериалы | Регипс | 112 | 11760 |
Досуг | Музыка | 117 | 7605 |
Теперь требуется извлечь данные о категориях и частях категорий объявлений, за
которые выручено более 10000 денежных единиц в неделю. Пишем следующий запрос:
SELECT Category, Part, Units, Money
FROM ADS WHERE Money > 10000
Результатом выполнения запроса будет следующая таблица:
Category | Part | Units | Money |
Транспорт | Автомашины | 110 | 17600 |
Недвижимость | Квартиры | 89 | 18690 |
Недвижимость | Дачи | 57 | 11970 |
Транспорт | Мотоциклы | 131 | 20960 |
Стройматериалы | Регипс | 112 | 11760 |
Теперь требуется извлечь данные, которые соответствуют критериям и первого, и второго запросов.
Объединяем запросы при помощи оператора UNION:
SELECT Category, Part, Units, Money
FROM ADS WHERE Units > 100
UNION
SELECT Category, Part, Units, Money
FROM ADS WHERE Money > 10000
Результатом выполнения запроса будет следующая таблица:
Транспорт | Автомашины | 110 | 17600 |
Транспорт | Мотоциклы | 131 | 20960 |
Недвижимость | Квартиры | 89 | 18690 |
Недвижимость | Дачи | 57 | 11970 |
Электротехника | Телевизоры | 127 | 8255 |
Электротехника | Холодильники | 137 | 8905 |
Стройматериалы | Регипс | 112 | 11760 |
Досуг | Музыка | 117 | 7605 |
Примеры запросов к базе данных «Портал объявлений-1» есть также в уроках об
операторах INSERT, UPDATE, DELETE, HAVING.
- Итоги и индивидуальные значения в одной таблице с помощью оператора SQL UNION
- Другие случаи объединения запросов к одной таблице с помощью оператора SQL UNION
- Объединение результатов запросов к двум таблицам с помощью оператора SQL UNION
- Объединение результатов сложных запросов
Поделиться с друзьями
Назад | Содержание | Вперёд>>> |
Оператор SQL UNION
❮ Предыдущий
Далее ❯
Оператор SQL UNION
Оператор UNION
используется для объединения набора результатов двух или более
ВЫБЕРИТЕ
заявления.
- Каждая инструкция
SELECT
внутри
UNION
должен иметь тот же номер
колонн - Столбцы также должны иметь похожие типы данных
- Столбцы в
каждый операторSELECT
также должен быть в том же порядке
Синтаксис UNION
SELECT имя_столбца(ов) FROM таблица1
UNION
SELECT имя_столбца(ов) FROM таблица2 ;
UNION ALL Синтаксис
Оператор UNION
по умолчанию выбирает только отдельные значения. Позволять
повторяющиеся значения, используйте UNION ALL
:
SELECT имя_столбца(ов) FROM table1
UNION ALL
SELECT имя_столбца(ов) FROM таблица2 ;
Примечание: Имена столбцов в результирующем наборе обычно равны
имена столбцов в первом операторе SELECT
.
Демонстрационная база данных
В этом руководстве мы будем использовать известную учебную базу данных Northwind.
Ниже представлена выборка из таблицы «Клиенты»:
CustomerID | ИмяКлиента | Контактное имя | Адрес | Город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Альфред Футтеркисте | Мария Андерс | ул. Обере 57 | Берлин | 12209 | Германия |
2 | Ана Трухильо Emparedados y helados | Ана Трухильо | Авда. Конститусьон 2222 | Мексика Д.Ф. | 05021 | Мексика |
3 | Антонио Морено Такерия | Антонио Морено | Матадерос 2312 | Мексика Д.Ф. | 05023 | Мексика |
И выбор из таблицы «Поставщики»:
SupplierID | Название Поставщика | Контактное имя | Адрес | Город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Экзотическая жидкость | Шарлотта Купер | ул. Гилберта, 49 | Лондон | ЭК1 4СД | Великобритания |
2 | Новый Орлеан Cajun Delights | Шелли Берк | Почтовый индекс Коробка 78934 | Новый Орлеан | 70117 | США |
3 | Усадьба бабушки Келли | Регина Мерфи | 707 Оксфорд Роуд. | Анн-Арбор | 48104 | США |
SQL UNION Пример
Следующая инструкция SQL возвращает города
(только отдельные значения) из таблиц «Клиенты» и «Поставщики»:
Пример
ВЫБЕРИТЕ Город ИЗ Заказчиков
ОБЪЕДИНЕНИЕ
ВЫБЕРИТЕ Город ИЗ Поставщиков
ORDER BY City;
Попробуйте сами »
Примечание: Если у некоторых клиентов или поставщиков один и тот же город, каждый город будет
указан один раз, потому что UNION
выбирает только отдельные значения. Использовать
UNION ALL
также выбрать
повторяющиеся значения!
SQL UNION ALL Пример
Следующая инструкция SQL возвращает города
(также повторяющиеся значения) из таблиц «Клиенты» и «Поставщики»:
Пример
ВЫБЕРИТЕ Город ИЗ Клиентов
ОБЪЕДИНЕНИЕ ВСЕ
ВЫБЕРИТЕ Город ИЗ Поставщиков
ЗАКАЗ ПО ГОРОДУ;
Попробуйте сами »
SQL UNION With WHERE
Следующая инструкция SQL возвращает города Германии.
(только разные значения) из таблиц «Клиенты» и «Поставщики»:
Пример
ВЫБЕРИТЕ город, страну ИЗ клиентов
ГДЕ Страна=’Германия’
СОЮЗ
ВЫБЕРИТЕ город, страну ИЗ поставщиков
ГДЕ Страна=’ Германия’
ЗАКАЗАТЬ ПО ГОРОДУ;
Попробуйте сами »
SQL UNION ALL With WHERE
Следующая инструкция SQL возвращает немецкие города (также повторяющиеся значения) из
таблица «Клиенты» и «Поставщики»:
Пример
ВЫБЕРИТЕ город, страну ИЗ клиентов
ГДЕ Страна=’Германия’
ОБЪЕДИНЕНИЕ ВСЕ
ВЫБЕРИТЕ город, страну ИЗ поставщиков
ГДЕ Страна=’Германия’
ЗАКАЗАТЬ ПО Город;
Попробуйте сами »
Другой пример UNION
Следующая инструкция SQL перечисляет всех клиентов и поставщиков:
Пример
ВЫБЕРИТЕ ‘Клиент’ AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT ‘Supplier’, ContactName, City, Country
FROM Suppliers;
Попробуйте сами »
Обратите внимание на «Тип AS» выше — это псевдоним. SQL
Псевдонимы используются для присвоения таблице или столбцу временного имени.
Псевдоним существует только на время выполнения запроса. Итак, вот мы создали
временный столбец с именем «Тип», в котором указано, является ли контактное лицо
«Заказчик» или «Поставщик».
❮ Предыдущий
Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебное пособие по W3.CSS
Учебное пособие по Bootstrap
Учебное пособие по PHP
Учебное пособие по Java
Учебное пособие по C++
Учебное пособие по jQuery
900 Справочник
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3. CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
FORUM |
О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения.
Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.
Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования,
куки-файлы и политика конфиденциальности.
Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
MySQL UNION — Полное руководство
Ричард Петерсон
Часы
Обновлено
Что такое союз?
Объединения объединяют результаты нескольких запросов SELECT в объединенный набор результатов.
Единственным требованием для того, чтобы это работало, является то, что количество столбцов должно быть одинаковым во всех запросах SELECT, которые необходимо объединить.
Предположим, у нас есть две следующие таблицы:
Давайте теперь создадим запрос UNION для объединения обеих таблиц с использованием DISTINCT
ВЫБРАТЬ столбец 1, столбец 2 ИЗ таблицы 1 СОЮЗ ОТЛИЧНЫЙ ВЫБЕРИТЕ столбец1, столбец2 ИЗ `таблицы2`;
Здесь удаляются повторяющиеся строки и возвращаются только уникальные строки.
Примечание. MySQL использует предложение DISTINCT по умолчанию при выполнении запросов UNION, если ничего не указано.
Давайте теперь создадим запрос UNION для объединения обеих таблиц, используя ВСЕ
SELECT `column1`, `column1` FROM `table1` СОЮЗ ВСЕХ ВЫБЕРИТЕ `столбец1`,`столбец1` ИЗ `таблицы2`;
Здесь включены повторяющиеся строки, и поскольку мы используем ВСЕ.
Зачем использовать союзы?
Предположим, что в вашей базе данных есть изъян, и вы используете две разные таблицы, предназначенные для одной и той же цели. Вы хотите объединить эти две таблицы в одну, исключив при этом дублирование записей в новой таблице. Вы можете использовать UNION в таких случаях.
Сводка
- Команда UNION используется для объединения нескольких результатов запроса SELECT в один запрос, содержащий строки из всех запросов выбора.
- Чтобы команда UNION работала, количество столбцов и типов данных в операторах SELECT должно быть одинаковым.
- Предложение DISTINCT используется для исключения повторяющихся значений из набора результатов запроса UNION. MySQL использует предложение DISTINCT по умолчанию при выполнении запросов UNION, если ничего не указано.
- Предложение ALL используется для возврата всех четных повторяющихся строк в запросе UNION.
Практические примеры использования MySQL workbench
В нашей myFlixDB давайте объединим
member_number и full_names из таблицы Members
с
movie_id и title из таблицы фильмов
Мы можем использовать следующий запрос
SELECT `membership_number`,`full`members` СОЮЗ ВЫБЕРИТЕ `movie_id`,`название` ИЗ `фильмов`;
Выполнение вышеуказанного скрипта в рабочей среде MySQL для базы данных myflixdb дает нам следующие результаты, показанные ниже.