TOP

Instrução SQL UNION

SQL UNION Descrição

O operador UNION é usado para combinar o conjunto de resultados de duas ou mais instruções SELECT.

  • Cada instrução SELECT em UNION deve ter o mesmo número de colunas
  • As colunas também devem ter tipos de dados semelhantes
  • As colunas em cada instrução SELECT também devem estar na mesma ordem

  • Sintaxe UNION

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2
    

    UNION ALL Sintaxe

    O operador UNION seleciona apenas valores distintos por padrão. Para permitir valores duplicados, use UNION ALL:

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2
    
    Os nomes das colunas no conjunto de resultados geralmente correspondem aos nomes das colunas na primeira instrução SELECT.

    Banco de dados de demonstração

    Neste tutorial usaremos o famoso banco de dados de exemplo "Northwind".

    Abaixo está um exemplo da tabela "Customers" ("Clientes"):

    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

    E a amostra da tabela "Suppliers" ("Fornecedores"):

    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

    Exemplo SQL UNION

    A seguinte instrução SQL seleciona cidades (somente valores diferentes) das tabelas Clientes e Fornecedores:

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    Caso alguns clientes ou fornecedores tenham a mesma cidade (City), cada cidade será especificada apenas uma vez porque UNION seleciona apenas valores diferentes. Use UNION ALL para selecionar valores duplicados também!

    SQL UNION ALL Exemplo

    A seguinte instrução SQL seleciona cidades (também valores duplicados) das tabelas Clientes e Fornecedores:

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

    SQL UNION junto com WHERE

    A seguinte instrução SQL seleciona cidades alemãs (somente valores diferentes) das tabelas Clientes e Fornecedores:

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

    SQL UNION ALL junto com WHERE

    A seguinte instrução SQL seleciona cidades alemãs (também valores duplicados) das tabelas Clientes e Fornecedores:

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

    Outro exemplo SQL UNION

    A seguinte instrução SQL lista todos os clientes e fornecedores:

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

    Observe que "AS Type" acima é um alias. Aliases SQL são usados para dar um nome temporário a uma tabela ou coluna. O alias existe apenas durante a solicitação. Então, criamos aqui uma coluna temporária chamada "Type" que indica se o contato é um "Cliente" ou um "Fornecedor".