Volver a la página principal
lunes 26 agosto 2024
9

Cómo utilizar UNION y UNION ALL en SQL

¿Qué es el Operador UNION?

El operador UNION se utiliza para combinar los resultados de dos o más consultas SELECT, eliminando las filas duplicadas en el proceso. Esto significa que si una fila aparece en ambos conjuntos de resultados, solo se incluirá una vez en el conjunto final.

Características del Operador UNION

  • Eliminación de Duplicados: UNION elimina automáticamente las filas duplicadas en el conjunto de resultados combinado.
  • Orden y Tipo de Datos: Las columnas correspondientes en las consultas involucradas deben tener el mismo número, orden y tipo de datos.
  • Combinación de Resultados: UNION es ideal cuando se desea obtener un conjunto de resultados consolidado y único.

¿Qué es el Operador UNION ALL?

El operador UNION ALL también combina los resultados de dos o más consultas SELECT, pero a diferencia de UNION, no elimina las filas duplicadas. Esto significa que si una fila aparece varias veces en los conjuntos de resultados originales, aparecerá tantas veces como esté presente en el conjunto final.

Características del Operador UNION ALL

  • Conservación de Duplicados: UNION ALL incluye todas las filas, incluidas las duplicadas, en el conjunto de resultados combinado.
  • Orden y Tipo de Datos: Al igual que UNION, las columnas deben coincidir en número, orden y tipo de datos.
  • Rendimiento: UNION ALL suele ser más rápido que UNION, ya que no requiere la operación adicional de eliminar duplicados.

Sintaxis de UNION y UNION ALL

La sintaxis básica para usar UNION y UNION ALL es la siguiente:

-- Uso de UNION
SELECT columna1, columna2, ...
FROM tabla1
UNION
SELECT columna1, columna2, ...
FROM tabla2;

-- Uso de UNION ALL
SELECT columna1, columna2, ...
FROM tabla1
UNION ALL
SELECT columna1, columna2, ...
FROM tabla2;

Ambos operadores se colocan entre dos o más sentencias SELECT que deben devolver el mismo número de columnas con tipos de datos compatibles.

Ejemplos Prácticos de UNION y UNION ALL

Para ilustrar el uso de UNION y UNION ALL, consideremos dos tablas de ejemplo: Clientes_2023 y Clientes_2024, que contienen información sobre clientes que realizaron compras en dos años diferentes.

Tabla Clientes_2023:

+------------+-----------+------------+
| cliente_id | nombre    | ciudad     |
+------------+-----------+------------+
| 1          | Juan      | Madrid     |
| 2          | María     | Barcelona  |
| 3          | Luis      | Sevilla    |
| 4          | Ana       | Valencia   |
+------------+-----------+------------+

Tabla Clientes_2024:

+------------+-----------+------------+
| cliente_id | nombre    | ciudad     |
+------------+-----------+------------+
| 2          | María     | Barcelona  |
| 3          | Luis      | Sevilla    |
| 5          | Pedro     | Bilbao     |
| 6          | Marta     | Zaragoza   |
+------------+-----------+------------+

Ejemplo 1: Uso de UNION

Para obtener una lista única de todos los clientes que realizaron compras en cualquiera de los dos años, podemos usar el operador UNION:

SELECT cliente_id, nombre, ciudad
FROM Clientes_2023
UNION
SELECT cliente_id, nombre, ciudad
FROM Clientes_2024;

El resultado será:

+------------+-----------+------------+
| cliente_id | nombre    | ciudad     |
+------------+-----------+------------+
| 1          | Juan      | Madrid     |
| 2          | María     | Barcelona  |
| 3          | Luis      | Sevilla    |
| 4          | Ana       | Valencia   |
| 5          | Pedro     | Bilbao     |
| 6          | Marta     | Zaragoza   |
+------------+-----------+------------+

En este resultado, las filas duplicadas (como el cliente con cliente_id = 2 y cliente_id = 3) se han eliminado, por lo que solo se muestran una vez.

Ejemplo 2: Uso de UNION ALL

Si queremos incluir todas las filas, incluidas las duplicadas, podemos usar UNION ALL:

SELECT cliente_id, nombre, ciudad
FROM Clientes_2023
UNION ALL
SELECT cliente_id, nombre, ciudad
FROM Clientes_2024;

El resultado será:

+------------+-----------+------------+
| cliente_id | nombre    | ciudad     |
+------------+-----------+------------+
| 1          | Juan      | Madrid     |
| 2          | María     | Barcelona  |
| 3          | Luis      | Sevilla    |
| 4          | Ana       | Valencia   |
| 2          | María     | Barcelona  |
| 3          | Luis      | Sevilla    |
| 5          | Pedro     | Bilbao     |
| 6          | Marta     | Zaragoza   |
+------------+-----------+------------+

Aquí, las filas duplicadas no se eliminan, por lo que las entradas para María y Luis aparecen dos veces en el resultado.

Diferencias Clave entre UNION y UNION ALL

  • Manejo de Duplicados:
  • UNION: Elimina automáticamente los duplicados en el conjunto de resultados.
  • UNION ALL: Incluye todos los duplicados en el conjunto de resultados.
  • Rendimiento:
  • UNION: Puede ser más lento debido al proceso de eliminación de duplicados.
  • UNION ALL: Es generalmente más rápido ya que no requiere la eliminación de duplicados.
  • Uso Común:
  • UNION: Es ideal cuando necesitas un conjunto de resultados único y consolidado.
  • UNION ALL: Es útil cuando quieres ver todas las filas, incluidas las duplicadas.

Consideraciones y Buenas Prácticas

1. Correspondencia de Columnas

Es crucial que las consultas que uses con UNION y UNION ALL tengan el mismo número de columnas con tipos de datos compatibles y en el mismo orden.

2. Rendimiento

Si estás combinando conjuntos de datos grandes y no necesitas eliminar duplicados, es recomendable usar UNION ALL para mejorar el rendimiento.

3. Uso Adecuado

Decide si necesitas eliminar duplicados o conservar todas las filas antes de elegir entre UNION y UNION ALL. Usa UNION cuando los duplicados no sean relevantes para tu análisis, y UNION ALL cuando desees preservar todas las instancias.

Conclusión

Los operadores UNION y UNION ALL son herramientas esenciales en SQL para combinar resultados de múltiples consultas. Mientras que UNION es útil para obtener un conjunto de resultados único, UNION ALL conserva todas las filas, incluidas las duplicadas. Conocer las diferencias entre estos dos operadores y cuándo utilizarlos te permitirá optimizar tus consultas y obtener los resultados más relevantes para tus necesidades.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer