PostgreSQL Unión, Unión TODOS con ejemplos

⚡ Resumen inteligente

PostgreSQL UNION combina los resultados de dos o más sentencias SELECT en un único conjunto de resultados y elimina las filas duplicadas, mientras que UNION ALL conserva todas las filas, lo que proporciona una opción más rápida cuando los duplicados no importan.

  • 🔗 Combine: UNION combina filas de varias sentencias SELECT en un único conjunto de resultados.
  • 🧹 Duplicados: UNION elimina las filas duplicadas, mientras que UNION ALL conserva todas las filas coincidentes.
  • 📐 Reglas: Cada sentencia SELECT debe devolver el mismo número de columnas con tipos de datos compatibles.
  • ↕️ ORDENAR POR: Una sola cláusula ORDER BY al final ordena el conjunto de resultados combinados.
  • Actuación: UNION ALL se ejecuta más rápido porque omite el paso de eliminación de duplicados.
  • 🤖 Ayuda de IA: Los asistentes de IA alinean las columnas y eligen entre UNIÓN y UNIÓN TODO.

PostgreSQL UNIÓN y UNIÓN TODOS

¿Qué es PostgreSQL ¿Unión?

El PostgreSQL El operador UNION se utiliza para combinar conjuntos de resultados de más de una instrucción SELECT en un único conjunto de resultados. Se eliminan todas las filas duplicadas de los resultados de las instrucciones SELECT. El operador UNION funciona en dos condiciones:

  • Las consultas SELECT deben devolver el mismo número de columnas.
  • Los tipos de datos de todas las columnas correspondientes deben ser compatibles.

El operador UNION se utiliza normalmente para combinar datos de tablas relacionadas que no se han normalizado perfectamente.

Sintaxis

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Aquí hay una explicación para los parámetros anteriores:

La expresión_1, expresión_2,… expresión_n son los cálculos o columnas que necesita recuperar.

Las tablas son las tablas de las que necesita recuperar registros.

Las condiciones WHERE son las condiciones que deben cumplirse para que se recuperen los registros.

Nota: Dado que el operador UNION no devuelve duplicados, el uso de UNION DISTINCT no tendrá ningún impacto en los resultados.

PostgreSQL Union

El operador UNION elimina los duplicados, de la misma manera que SELECCIONAR DISTINTO Sí. Vamos a demostrarlo. Tenemos una base de datos llamada Demo con las siguientes tablas:

Libro:

PostgreSQL Union

Precio:

PostgreSQL Union

Ejecutemos el siguiente comando:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

El comando devolverá lo siguiente:

PostgreSQL Union

La columna id aparece tanto en la tabla Libro como en la tabla Precio. Sin embargo, aparece sólo una vez en el resultado. La razón es que PostgreSQL El operador UNION no devuelve duplicados.

PostgreSQL Union all

Este operador combina conjuntos de resultados de más de una instrucción SELECT sin eliminar los duplicados. El operador requiere que cada instrucción SELECT tenga una cantidad similar de campos en conjuntos de resultados de tipos de datos similares.

Sintaxis:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Aquí hay una explicación para los parámetros anteriores:

La expresión_1, expresión_2,… expresión_n son los cálculos o columnas que necesita recuperar.

Las tablas son las tablas de las que necesita recuperar registros.

Las condiciones WHERE son las condiciones que deben cumplirse para que se recuperen los registros.

Nota: Ambas sentencias SELECT deben tener el mismo número de expresiones.

Utilizaremos las siguientes tablas:

Libro:

PostgreSQL Union all

Precio:

PostgreSQL Union all

Ejecute el siguiente comando:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Debería devolver lo siguiente:

PostgreSQL Union all

Los duplicados no han sido eliminados.

ORDEN POR

El PostgreSQL El operador UNION se puede utilizar junto con la cláusula ORDER BY para ordenar los resultados de la consulta. Para demostrarlo, utilizaremos las siguientes tablas:

Precio:

ORDEN POR

Precio2:

ORDEN POR

Aquí está el comando que demuestra cómo utilizar el operador UNION junto con la cláusula ORDER BY:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

El comando devolverá lo siguiente:

ORDEN POR

Los registros fueron ordenados por la columna de precio. La cláusula ordena los registros en orden ascendente de forma predeterminada. Para ordenarlos en orden descendente, agregue la cláusula DESC como se muestra a continuación:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

El comando devolverá lo siguiente:

ORDEN POR

Los registros se han ordenado según la columna de precio en orden descendente.

¿Cuándo usar Union y cuándo usar Union All?

Utilice el operador UNION cuando tenga varias tablas con una estructura similar, pero que se hayan dividido por algún motivo. Es útil cuando necesita eliminar registros duplicados.

Utilice el operador UNION ALL cuando no necesite eliminar registros duplicados.

Usando pgAdmin

Ahora veamos cómo se realizan las tres acciones usando pgAdmin.

Instrucciones de uso PostgreSQL Unión usando pgAdmin

A continuación se muestra un proceso paso a paso sobre cómo utilizarlo. PostgreSQL UNIÓN a través de pgAdmin:

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2) En la barra de navegación de la izquierda, haga clic en Bases de datos y, a continuación, en Demo.

Usar PostgreSQL Unión usando pgAdmin

Paso 3) Escriba la consulta en el editor de consultas:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Paso 4) Haga clic en el botón Ejecutar.

Usar PostgreSQL Unión usando pgAdmin

Debería devolver lo siguiente:

Usar PostgreSQL Unión usando pgAdmin

Union all

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2) En la barra de navegación de la izquierda, haga clic en Bases de datos y, a continuación, en Demo.

Usar PostgreSQL Unión todo usando pgAdmin

Paso 3) Escriba la consulta en el editor de consultas:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Paso 4) Haga clic en el botón Ejecutar.

Usar PostgreSQL Unión todo usando pgAdmin

Debería devolver lo siguiente:

Usar PostgreSQL Unión todo usando pgAdmin

ORDEN POR

El operador UNION ALL se puede combinar con la cláusula ORDER BY para ordenar los resultados en el conjunto de resultados. Por ejemplo:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

El comando devolverá lo siguiente:

Usar PostgreSQL ORDENAR USANDO pgAdmin

Los resultados han sido ordenados.

Descargue la Base de Datos utilizada en este Tutorial

Preguntas Frecuentes

UNION ALL es más rápido porque simplemente concatena las filas. UNION debe ordenar o aplicar una función hash a las filas combinadas para eliminar duplicados, lo que genera una sobrecarga. Cuando los duplicados no importan, UNION ALL es la opción más eficiente.

Sí. Cada SELECT en una UNION debe devolver el mismo número de columnas, y las columnas coincidentes deben tener tipos de datos compatibles en el mismo orden. De lo contrario... PostgreSQL Se produce un error y la consulta falla.

Sí. Los nombres de las columnas pueden ser diferentes porque UNION compara las columnas por posición, no por nombre. Los tipos de datos deben seguir siendo compatibles, y el conjunto de resultados utiliza los nombres de las columnas de la primera instrucción SELECT.

UNION apila verticalmente las filas de dos conjuntos de resultados en una sola lista de columnas, eliminando los duplicados. JOIN combina horizontalmente columnas de diferentes tablas basándose en una clave relacionada, por lo que expande las filas en lugar de agregarlas.

ORDER BY ordena el resultado combinado final, por lo que PostgreSQL Permite una única cláusula ORDER BY después de la última SELECT. Ordenar las consultas individuales primero carecería de sentido una vez que sus filas se hayan fusionado.

Los asistentes de IA como GitHub Copilot alinean las listas de columnas de cada SELECT, señalan los tipos de datos que no coinciden y recomiendan UNION o UNION ALL en función de si se deben conservar los duplicados, lo que reduce los errores comunes en las consultas.

Sí. Al examinar tus tablas y tu objetivo, un asistente de IA puede determinar si es posible y relevante tener filas duplicadas, y luego sugerir UNION ALL cuando las duplicadas sean aceptables para ganar velocidad, o UNION cuando deban eliminarse.

UNION devuelve las filas que aparecen en cualquiera de las dos consultas. INTERSECT devuelve solo las filas presentes en ambas consultas, y EXCEPT devuelve las filas de la primera consulta pero no las de la segunda. Las tres eliminan los duplicados por defecto.

Resumir este post con: