El operador UNION se utiliza para combinar el conjunto de resultados de dos o más declaraciones SELECT.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
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
En este tutorial usaremos la famosa base de datos de ejemplo "Northwind".
A continuación se muestra un ejemplo de la tabla "Customers" ("Clientes"):
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. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Y el ejemplo de la tabla "Suppliers" ("Proveedores"):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
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
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
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
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
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".