Uso del operador UNION

Completado

El operador UNION permite combinar dos o más conjuntos de resultados de consulta en un único conjunto de resultados. Hay dos maneras de hacerlo:

  • UNION: el resultado combinado no incluye duplicados.
  • UNION ALL: el resultado combinado no incluye duplicados.

Sugerencia

Un valor NULL de un conjunto se trata de la misma forma que un valor NULL de otro conjunto.

Hay dos reglas al combinar conjuntos de resultados mediante UNION:

  • El número y el orden de las columnas debe ser igual en todas las consultas.
  • Los tipos de datos deben ser compatibles.

Nota:

UNION es diferente de JOIN. JOIN compara las columnas de dos tablas para crear un conjunto de resultados que contenga filas de dos tablas. UNION concatena dos conjuntos de resultados juntos: todas las filas del primer conjunto de resultados se anexan a las filas del segundo conjunto de resultados.

Veamos un ejemplo sencillo de dos listas de clientes y los conjuntos de resultados que devuelven. La primera consulta devuelve clientes con un CustomerID entre 1 y 9.

SELECT CustomerID, companyname, FirstName + ' ' + LastName AS 'Name'
FROM SalesLT.Customer
WHERE CustomerID BETWEEN 1 AND 9; 

Captura de pantalla que muestra los resultados de la primera instrucción SELECT.

La segunda consulta devuelve clientes con un CustomerID entre 10 y 19.

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19;

Captura de pantalla que muestra los resultados de la segunda instrucción SELECT.

Para combinar estas dos consultas en el mismo conjunto de resultados, use el operador UNION:

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 1 AND 9
UNION
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19; 

Este es el conjunto de resultados que se devuelve:

Captura de pantalla que muestra los resultados de la instrucción UNION.

Al igual que con todas las instrucciones Transact-SQL, no se garantiza ningún criterio de ordenación a menos que se especifique explícitamente uno. Si necesita una salida ordenada, agregue una cláusula ORDER BY al final de la segunda consulta.

Con UNION o UNION ALL, ambas consultas deben tener el mismo número de columnas y las columnas deben ser del mismo tipo de datos, lo que permite combinar filas de diferentes consultas.