Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

PostgreSQL UNION

El operador `UNION` de PostgreSQL se utiliza para combinar los conjuntos de resultados de dos o más consultas `SELECT` en un único conjunto de resultados, eliminando las filas duplicadas. Garantiza que el conjunto de resultados combinado sea único. La ordenación del conjunto de resultados no la realiza `UNION` de forma inherente y debe especificarse explícitamente con una cláusula `ORDER BY`.

Utilización

El operador `UNION` se utiliza cuando necesitas agregar resultados de varias sentencias `SELECT` en un conjunto de datos cohesionado. Es especialmente útil para fusionar tablas con estructuras similares.

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

En esta sintaxis, `UNION` fusiona las salidas de las dos sentencias `SELECT`, descartando cualquier fila duplicada. Los nombres implícitos de las columnas del conjunto de resultados se derivan de la primera sentencia `SELECT`.

Ejemplos

1. UNIÓN básica

SELECT city
FROM customers
UNION
SELECT city
FROM suppliers;

Este ejemplo combina una lista de ciudades de las tablas "clientes" y "proveedores", eliminando los duplicados para obtener una lista única.

2. UNIÓN con nombres de columna diferentes

SELECT first_name AS name
FROM employees
UNION
SELECT supplier_name AS name
FROM suppliers;

Aquí, las columnas con nombres diferentes se combinan utilizando `UNION`. El alias `nombre` se aplica al conjunto de resultados, y la coherencia en los alias es crucial para la legibilidad y el mantenimiento. Las columnas deben ser del mismo tipo de datos.

3. UNIÓN con ORDENAR POR

SELECT product_name
FROM products
UNION
SELECT service_name
FROM services
ORDER BY 1;

Este ejemplo combina los nombres de productos y servicios en una lista y ordena todo el conjunto de resultados alfabéticamente. La cláusula `ORDENAR POR` utiliza la posición de la columna, lo que suele recomendarse para evitar ambigüedades.

Consejos y buenas prácticas

  • Asegúrate de la compatibilidad de las columnas. El número y los tipos de datos de las columnas de cada `SELECT` deben coincidir.
  • Utiliza "UNIR TODO" para mejorar el rendimiento. Si los duplicados son aceptables, `UNIR TODO` evita la sobrecarga de ordenar y eliminar duplicados.
  • Ten cuidado con "ORDENAR POR". Sólo el último `SELECT` puede incluir una cláusula `ORDER BY`, que afecta a todo el conjunto de resultados. Haz referencia a los nombres de las columnas de salida o utiliza las posiciones de las columnas para evitar ambigüedades.
  • Comprueba el manejo de NULL. Asegúrate de que las columnas de las consultas tratan los valores "NULL" de forma coherente para evitar resultados inesperados.
  • Piensa en la indexación. Las tablas de indexación utilizadas en las consultas `UNION` pueden optimizar el rendimiento al acelerar la recuperación de datos.
  • Comprende las implicaciones para el rendimiento. Utilizar `UNION` puede implicar un procesamiento adicional para ordenar y eliminar duplicados en comparación con `UNION ALL`.