TOP

SQL UNION Оператор

SQL 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.

    Демонстрационная база данных

    В этом справочнике мы будем использовать известный пример базы данных "Northwind".

    Ниже приведена выборка из таблицы "Customers" ("Клиенты"):

    CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
    1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
    2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
    3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
    4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
    5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

    И выборку из таблицы "Suppliers" ("Поставщики"):

    SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
    1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
    2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
    3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
    4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
    5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

    SQL UNION Пример

    Следующая инструкция SQL выбирает города (только разные значения) из таблицы "Клиенты" и "Поставщики":

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    Если некоторые клиенты или поставщики имеют один и тот же город (City), каждый город будет указан только один раз, поскольку UNION выбирает только разные значения. Используйте UNION ALL, чтобы выбрать повторяющиеся значения!

    SQL UNION ALL Пример

    Следующая инструкция SQL выбирает города (также повторяющиеся значения) из обеих таблиц "Клиенты" и "Поставщики":

    Run SQLSELECT City FROM Customers 
    UNION ALL 
    SELECT City FROM Suppliers 
    ORDER BY City
    

    SQL UNION вместе с WHERE

    Следующая SQL-инструкция выбирает немецкие города (только разные значения) из обеих таблиц "Клиенты" и "Поставщики":

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    SQL UNION ALL вместе с WHERE

    Следующая инструкция SQL выбирает немецкие города (также повторяющиеся значения) из обеих таблиц "Клиенты" и "Поставщики":

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION ALL 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    Другой SQL UNION Пример

    Следующая инструкция SQL содержит список всех клиентов и поставщиков:

    Run SQLSELECT 'Customer' AS Type, ContactName, City, Country 
    FROM Customers 
    UNION 
    SELECT 'Supplier', ContactName, City, Country 
    FROM Suppliers
    

    Обратите внимание на "AS Type" выше – это псевдоним. Псевдонимы SQL используются для предоставления таблицы или столбца временного имени. Псевдоним существует только при выполнении запроса. Итак, здесь мы создали временный столбец под названием "Type", в котором указано, является ли контактное лицо "Клиентом" или "Поставщиком".