Оператор UNION в MySQL
Оператор MySQL UNION
Оператор UNION
используется для объединения набора результатов двух или более
SELECT
операторов.
- Каждый
SELECT
оператор внутриUNION
должен иметь одинаковое количество столбцов. - Столбцы также должны иметь похожие типы данных.
- Столбцы в каждом
SELECT
операторе также должны быть в том же порядке
ОБЪЕДИНЕНИЕ Синтаксис
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
ОБЪЕДИНЕНИЕ ВСЕХ Синтаксис
По UNION
умолчанию оператор выбирает только отдельные значения. Чтобы разрешить повторяющиеся значения, используйте UNION ALL
:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Примечание. Имена столбцов в результирующем наборе обычно совпадают с именами столбцов в первом SELECT
выражении.
Демонстрационная база данных
В этом уроке мы будем использовать хорошо известную учебную базу данных Northwind.
Ниже приведена выборка из таблицы «Клиенты»:
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 возвращает города (только отдельные значения) из таблиц «Клиенты» и «Поставщики»:
Пример
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Примечание. Если у некоторых клиентов или поставщиков один и тот же город, каждый город будет указан только один раз, поскольку UNION
выбираются только разные значения. Используйте
UNION ALL
также для выбора повторяющихся значений!
SQL ОБЪЕДИНЕНИЕ ВСЕ Пример
Следующая инструкция SQL возвращает города (также повторяющиеся значения) из таблиц «Клиенты» и «Поставщики»:
Пример
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
СОЕДИНЕНИЕ SQL с ГДЕ
Следующая инструкция SQL возвращает города Германии (только отдельные значения) из таблиц «Клиенты» и «Поставщики»:
Пример
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
SQL UNION ВСЕ С WHERE
Следующая инструкция SQL возвращает города Германии (также повторяющиеся значения) из таблиц «Клиенты» и «Поставщики»:
Пример
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Другой пример UNION
Следующая инструкция SQL перечисляет всех клиентов и поставщиков:
Пример
SELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;
Обратите внимание на «Тип AS» выше — это псевдоним. Псевдонимы SQL используются для присвоения таблице или столбцу временного имени. Псевдоним существует только на время выполнения запроса. Итак, здесь мы создали временный столбец с именем «Тип», в котором указано, является ли контактное лицо «Клиентом» или «Поставщиком».