TOP

Declaración SQL UNION

SQL UNION descripción

El operador UNION se utiliza para combinar el conjunto de resultados de dos o más declaraciones SELECT.

  • Cada instrucción SELECT en UNION debe tener el mismo número de columnas
  • Las columnas también deben tener tipos de datos similares.
  • Las columnas de cada instrucción SELECT también deben estar en el mismo orden

  • UNION Sintaxis

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

    UNION ALL Sintaxis

    El operador UNION selecciona solo valores distintos de forma predeterminada. Para permitir valores duplicados, use UNION ALL:

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2
    
    Los nombres de las columnas en el conjunto de resultados generalmente coinciden con los nombres de las columnas en la primera instrucción SELECT.

    Base de datos de demostración

    En este tutorial usaremos la famosa base de datos de ejemplo "Northwind".

    A continuación se muestra un ejemplo de la tabla "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

    Y el ejemplo de la tabla "Suppliers" ("Proveedores"):

    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 Ejemplo

    La siguiente declaración SQL selecciona ciudades (solo valores diferentes) de las tablas Clientes y Proveedores:

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    Si algunos clientes o proveedores tienen la misma ciudad (City), cada ciudad se especificará solo una vez porque UNION solo selecciona valores diferentes. Utilice UNION ALL para seleccionar valores duplicados también.

    SQL UNION ALL Ejemplo

    La siguiente declaración SQL selecciona ciudades (también valores duplicados) de las tablas Clientes y Proveedores:

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

    SQL UNION junto con WHERE

    La siguiente declaración SQL selecciona ciudades alemanas (solo valores diferentes) de las tablas Clientes y Proveedores:

    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 con WHERE

    La siguiente declaración SQL selecciona ciudades alemanas (también valores duplicados) de las tablas Clientes y Proveedores:

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

    Otro ejemplo de SQL UNION

    La siguiente declaración SQL enumera todos los clientes y proveedores:

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

    Tenga en cuenta que el "AS Type" anterior es un alias. Los alias SQL se utilizan para dar un nombre temporal a una tabla o columna. El alias existe solo mientras dure la solicitud. Entonces, aquí hemos creado una columna temporal llamada "Type" que indica si el contacto es un "Cliente" o un "Proveedor".