PostgreSQL Union, Union ALL con ejemplos

¿Qué es PostgreSQL Union?

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

  • Las consultas SELECT DEBEN devolver un número similar de consultas.
  • 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.

En este tutorial de PostgreSQL, aprenderá:

  • ¿Qué es PostgreSQL Union?
  • Sintaxis
  • Unión
  • Unión Todos
  • PEDIR POR
  • ¿Cuándo usar Union y cuándo usar Union all?
  • Usando pgAdmin

Sintaxis

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Aquí hay una explicación de 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 DONDE 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.

Unión

El operador UNION elimina los duplicados. Demostremos esto.

Tenemos una base de datos llamada Demo con las siguientes tablas:

Libro:

Precio:

Ejecutemos el siguiente comando:

SELECT idFROM BookUNIONSELECT idFROM Price;

El comando devolverá lo siguiente:

La columna de identificación aparece tanto en el libro como en la tabla de precios. Sin embargo, aparece solo una vez en el resultado. La razón es que el operador UNION de PostgreSQL no devuelve duplicados.

Unión Todos

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 un número similar de campos en conjuntos de resultados de tipos de datos similares.

Sintaxis:

SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];

Aquí hay una explicación de 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 DONDE son las condiciones que deben cumplirse para que se recuperen los registros.

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

Usaremos las siguientes tablas:

Libro:

Precio:

Ejecute el siguiente comando:

SELECT idFROM BookUNION ALLSELECT idFROM price;

Debería devolver lo siguiente:

No se han eliminado los duplicados.

PEDIR POR

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

Precio:

Precio2:

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;

El comando devolverá lo siguiente:

Los registros se ordenaron por la columna de precios. 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 PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

El comando devolverá lo siguiente:

Los registros se han ordenado según la columna de precios 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 divididas por una razón. Es bueno cuando necesita eliminar / eliminar registros duplicados.

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

Usando pgAdmin

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

Unión

Para lograr lo mismo a través de pgAdmin, haga esto:

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

Paso 2)

  1. Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demo.

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

SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;

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

Debería devolver lo siguiente:

Unión Todos

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

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demo.

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

SELECT idFROM BookUNION ALLSELECT idFROM price;

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

Debería devolver lo siguiente:

PEDIR 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 idFROM BookUNION ALLSELECT idFROM priceORDER BY id;

El comando devolverá lo siguiente:

Se han ordenado los resultados.

Resumen:

  • El operador UNION de PostgreSQL combina los resultados de más de una instrucción SELECT en un conjunto de resultados.
  • El operador UNION no devuelve registros duplicados.
  • Para ordenar los resultados, combínelo con la cláusula ORDER BY.
  • El operador UNION ALL combina los resultados de más de una instrucción SELECT en un conjunto de resultados.
  • El operador UNION ALL no elimina los duplicados.

Descargue la base de datos utilizada en este tutorial

Articulos interesantes...