¿Qué es y para qué sirve SQL UNION?

En este tutorial, aprenderá a usar SQL UNION
para combinar los resultados de dos o más tablas en un solo conjunto de resultados.
Introducción a SQL Server UNION
SQL Server UNION
es una instrucción de conjunto que permite combinar resultados de dos instrucciones SELECT
en un solo conjunto de resultados que incluye todas las filas que pertenecen a las instrucciones SELECT
en la unión.
A continuación, se muestra la sintaxis de SQL UNION
:
query_EstradaWebGroup_1
UNION
query_ EstradaWebGroup_2
Los requisitos que deben cumplir las consultas anteriores son los siguientes:
- El número y el orden de las columnas deben ser iguales en ambas consultas.
- Los tipos de datos de las columnas correspondientes deben ser iguales o compatibles.
El siguiente diagrama de Venn ilustra cómo se une el conjunto de resultados de la tabla T1 con el conjunto de resultados de la tabla T2:
UNION
vs. UNION ALL
Por default, el operador UNION
elimina todas las filas duplicadas de los conjuntos de resultados. Sin embargo, si desea conservar las filas duplicadas, debe especificar la palabra clave ALL
explícitamente como se muestra a continuación:
query_EstradaWebGroup_1
UNION ALL
query_EstradaWebGroup_2
En otras palabras, el operador UNION
elimina las filas duplicadas mientras que el operador UNION ALL
incluye las filas duplicadas en el conjunto de resultados final.
UNION
vs. JOIN
La unión como INNER JOIN
o LEFT JOIN
combina columnas de dos tablas, mientras que UNION
combina filas de dos consultas.
En otras palabras, JOIN
agrega los conjuntos de resultados horizontalmente, mientras que UNION
agrega el conjunto de resultados verticalmente.
La siguiente imagen ilustra la principal diferencia entre UNION
y JOIN
:
Ejemplos de UNION de SQL Server
Consulte las siguientes tablas de personal y clientes de la base de datos de ejemplo:
Ejemplos de SQL UNION
y SQL UNION ALL
El siguiente ejemplo combina nombres de personal y clientes en una sola lista:
SELECT
first_name,
last_name
FROM
sales.staffs
UNION
SELECT
first_name,
last_name
FROM
sales.customers;
Devuelve 1.454 filas.
La tabla de staffs tiene 10 filas y la tabla de clientes tiene 1,445 filas como se muestra en las siguientes consultas:
SELECT
COUNT (*)
FROM
sales.staffs;
-- 10
SELECT
COUNT (*)
FROM
sales.customers;
-- 1445
Como el conjunto de resultados de la unión devuelve solo 1.454 filas, significa que se eliminó una fila duplicada.
Para incluir la fila duplicada, use UNION ALL
como se muestra en la siguiente consulta:
SELECT
first_name,
last_name
FROM
sales.staffs
UNION ALL
SELECT
first_name,
last_name
FROM
sales.customers;
La consulta devuelve 1.455 filas como se esperaba.
Ejemplo de SQL UNION y ORDEN BY
Para ordenar el conjunto de resultados devuelto por el operador UNION
, coloque la cláusula ORDER BY
en la última consulta de la siguiente manera:
SELECT
select_list
FROM
table_1
UNION
SELECT
select_list
FROM
table_2
ORDER BY
order_list;
Por ejemplo, para ordenar los nombres y apellidos de clientes y staff, utilice la siguiente consulta:
SELECT
first_name,
last_name
FROM
sales.staffs
UNION ALL
SELECT
first_name,
last_name
FROM
sales.customers
ORDER BY
first_name,
last_name;
En este tutorial, aprendiste a usar SQL UNION para combinar filas de múltiples consultas en un solo conjunto de resultados.