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