Saltar al contenido principal

UNION vs UNION ALL en SQL

Descubre las diferencias de rendimiento y prestaciones entre UNION y UNION ALL: UNION elimina los duplicados, mientras que UNION ALL los incluye.
Actualizado 29 jul 2024  · 7 min de lectura

En el universo SQL, la capacidad de combinar datos de varias consultas es un requisito fundamental, y SQL ofrece potentes funciones como UNION y UNION ALL para conseguirlo. 

Como verás, comprender las sutiles diferencias entre las funciones UNION y UNION ALL en SQL es imprescindible para consultar y gestionar datos con eficacia. Este tutorial explica sus principales similitudes, diferencias y escenarios de uso utilizando conjuntos de datos complementarios para ayudarte a optimizar tus consultas SQL.

La respuesta breve: SQL UNION vs. UNIÓN TODOS 

La diferencia clave es que UNION elimina los registros duplicados, mientras que UNION ALL incluye todos los duplicados. Esta distinción no sólo cambia el número de filas del resultado de la consulta, sino que también afecta al rendimiento.

Consideremos dos tablas de ejemplo, employees_2023 y employees_2024, que representan registros de empleados de dos años diferentes.

SELECT *
FROM employees_2023

employee_id

nombre

departamento

1

Alice

RRHH

2

Bob

IT

3

Charlie

Finanzas

SELECT *
FROM employees_2024

employee_id

nombre

departamento

2

Bob

IT

3

Charlie

Finanzas

4

David

Marketing

Ahora, unamos nuestras dos tablas utilizando la función UNION.

SELECT employee_id, name, department FROM employees_2023 
UNION 
SELECT employee_id, name, department FROM employees_2024;

employee_id

nombre

departamento

1

Alive

RRHH

2

Bob

IT

3

Charlie

Finanzas

4

David

Marketing

En este resultado, se eliminan los registros duplicados. Ahora comparemos esto con el resultado que obtenemos tras utilizar UNION ALL.

SELECT employee_id, name, department FROM employees_2023 
UNION ALL 
SELECT employee_id, name, department FROM employees_2024;

employee_id

nombre

departamento

1

Alive

RRHH

2

Bob

IT

3

Charlie

Finanzas

2

Bob

Bob

3

Charlie

Finanzas

4

David

Marketing

En este resultado, se incluyen todos los registros y no se eliminan los duplicados.

¿Qué es UNION en SQL?

La función UNION combina los resultados de dos o más consultas SELECT en un único conjunto de resultados, eliminando las filas duplicadas. Cada declaración SELECT dentro de UNION debe tener el mismo número de columnas. Además, tienen que tener tipos de datos similares, y las columnas también deben estar en el mismo orden. Para entender la función, vamos a crear a continuación dos tablas de ejemplo.

CREATE TABLE sales_team (
    employee_id INT,
    employee_name VARCHAR(50)
);
INSERT INTO sales_team (employee_id, employee_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');
CREATE TABLE support_team ( 
employee_id INT, 
employee_name VARCHAR(50)
 );
INSERT INTO support_team (employee_id, employee_name) VALUES 
(3, 'Charlie'), 
(4, 'David'), 
(5, 'Eve');

El código anterior creará las dos tablas que utilizaremos en este tutorial, sales_team y support_team, respectivamente. Puedes ver las tablas utilizando el código que aparece a continuación.

SELECT * 
FROM sales_team

Registros en el <código624

Registros de la tabla equipo_de_ventas. Imagen del autor 

SELECT * 
FROM support_team

Registros en el <código624

Registros de la tabla equipo_soporte. Imagen del autor 

Son tablas pequeñas con tres registros cada una, y los nombres de las columnas se explican por sí mismos. Ahora que tenemos nuestras dos tablas creadas, vamos a aplicar la función UNION.

SELECT employee_id, employee_name
    FROM sales_team
   UNION
SELECT employee_id, employee_name
    FROM support_team;

Salida del <código624

Salida de la función UNIÓN. Imagen del autor 

Puedes ver que se elimina la entrada duplicada de employee_id, que toma el valor de 3

¿Cuáles son los casos de uso de UNION en SQL?

He aquí algunos casos de uso común de la función UNION.

  • Combinar resultados de diferentes tablas: Cuando quieras combinar datos de varias tablas y asegurarte de que no hay registros duplicados, UNION es la función a la que debes recurrir.

  • Manejo de diferentes fuentes de datos: UNION es útil cuando se combinan tablas de diferentes fuentes de datos. 

  • Eliminar duplicados entre consultas: Cuando quieras garantizar la unicidad del conjunto de resultados combinado, utiliza UNION.

¿Qué es UNION ALL en SQL?

La función UNION ALL combina los resultados de dos o más consultas SELECT, incluyendo todas las filas duplicadas. Esta función es más rápida que UNION porque no se molesta en eliminar duplicados.

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Salida del <código624

Salida de la función UNION ALL. Imagen del autor 

Puedes ver que, en este caso, las entradas duplicadas se repiten y no se eliminan.

¿Cuáles son los casos de uso de UNION ALL en SQL?

He aquí algunos casos de uso común de la función UNION ALL.

  • Combinar resultados con duplicados: Utiliza UNION ALL cuando necesites combinar resultados de varias consultas y conservar todas las filas duplicadas.
  • Consideraciones de rendimiento: UNION ALL es más eficiente en tiempo que la función UNION, porque no requiere el paso adicional de eliminar duplicados.
  • Agregar datos de distintos periodos: Cuando agregues datos de distintos periodos o fuentes, y necesites conservar las entradas duplicadas, es preferible UNION ALL.
  • Informes y análisis: Para los informes en los que se necesitan todos los registros, incluidos los duplicados, es adecuado UNION ALL.

UNIÓN y UNIÓN TODO: Similitudes y diferencias

Vamos a crear una tabla resumen de las similitudes y diferencias. 

Función

UNIÓN

UNIÓN TODOS

Filas duplicadas

Eliminado

Incluye

Rendimiento

Más lento

Más rápido

Caso práctico

Cuando necesites registros únicos

Cuando necesites todos los registros

Resultado Tamaño

Más pequeño

Más grande

Diferencias sintácticas de UNION y UNION ALL entre dialectos SQL 

Aunque la sintaxis básica sigue siendo la misma en los distintos dialectos de SQL, hay ligeras variaciones según la plataforma. Si observas el código, en la mayoría de las plataformas, como SQL Server, Oracle, MySQL, PostgreSQL o BigQuery, el código tendrá un aspecto similar al que se muestra a continuación. 

SELECT employee_id, employee_name
    FROM sales_team
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Los comandos básicos de estos dialectos SQL siguen siendo los mismos, con algunos matices y diferencias:

  1. Manejo de NULLs y Colaciones: Los distintos dialectos de SQL pueden tener reglas diferentes para tratar los valores de NULL y la intercalación de cadenas.
  2. Optimizaciones de rendimiento: Las optimizaciones de rendimiento y la eficacia de ejecución pueden variar.
  3. Tratamiento de errores y advertencias: Los distintos dialectos pueden tratar los errores y advertencias de forma diferente al utilizar estas funciones.
  4. Funciones y características específicas de la plataforma: Algunos dialectos SQL pueden ofrecer funciones o características adicionales que pueden utilizarse junto con UNION y UNION ALL para situaciones más complejas.

El comando es significativamente diferente en el caso de PySpark, que funciona en un entorno distribuido. El código es el siguiente, suponiendo que df1 y df2 son los nombres de los dos marcos de datos formados por las dos tablas que hemos creado anteriormente. :

df1.union(df2)

Reflexiones finales

Es esencial comprender la aplicación de UNION frente a UNION ALL en la gestión eficaz de datos mediante SQL. Mientras que UNION sólo selecciona registros distintos, UNION ALL los selecciona todos, lo que afecta al rendimiento y al tamaño del conjunto de resultados. Utiliza estos conocimientos para elegir la función adecuada a tus necesidades específicas. 

Para aprender más, considera la posibilidad de explorar las siguientes fuentes:

  • Introducción al SQL: Aprende a crear y consultar bases de datos relacionales utilizando SQL.
  • Fundamentos de SQL: Adquiere los conocimientos fundamentales de SQL que necesitas para interactuar con tus datos y consultarlos. 
  • Certificación de Asociado SQL: Demuestra tu habilidad con SQL extrayendo los datos adecuados de una base de datos y utilizándolos para responder a preguntas habituales sobre datos.
  • SQL intermedio: Con este curso práctico, aprenderás todo lo que necesitas saber para analizar datos utilizando hoy mismo tu propio código SQL.

Preguntas frecuentes

¿Cuál es la principal diferencia entre SQL UNION y UNION ALL?

UNION elimina los registros duplicados, mientras que UNION ALL incluye todos los duplicados.

¿Hay alguna diferencia de rendimiento entre UNION y UNION ALL?

Sí, UNION suele ser más lento porque elimina los duplicados.

¿Existen casos de uso específicos en los que se prefiera UNION ALL a UNION?

UNION ALL es preferible cuando necesitas todos los registros, incluidos los duplicados, como en informes y análisis.

¿Cuándo debo utilizar SQL UNION en lugar de UNION ALL?

Utiliza UNION cuando necesites un conjunto de resultados combinados sin duplicados.

¿Cómo afectan los distintos dialectos SQL al uso de UNION y UNION ALL?

Aunque la sintaxis básica es coherente, puede haber ligeras variaciones en el rendimiento, el tratamiento de los NULL y la intercalación entre dialectos SQL.

Temas

Aprende SQL con DataCamp

curso

Introduction to SQL

2 hr
974.1K
Learn how to create and query relational databases using SQL in just two hours.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

blog

SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

En este tutorial, aprenderás algunas de las diferencias básicas entre los dialectos SQL y por dónde deberías empezar.
Mona Khalil's photo

Mona Khalil

5 min

tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

6 min

tutorial

Función SQL COALESCE

COALESCE() es una de las funciones más útiles de SQL. Lee este tutorial para aprender a dominarlo.
Travis Tang 's photo

Travis Tang

4 min

tutorial

Introducción a los disparadores SQL: Guía para desarrolladores

Aprende a utilizar los disparadores SQL para automatizar tareas, mantener la integridad de los datos y mejorar el rendimiento de la base de datos. Prueba ejemplos prácticos como los comandos CREATE, ALTER y DROP en MySQL y Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

13 min

See MoreSee More