SQL: UNION ALL operador

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL: UNION ALL operador

Este tutorial de SQL explica cómo usar SQL UNION TODO operador Con sintaxis y ejemplos.

describir

El operador SQL UNION ALL se usa para combinar los conjuntos de resultados de 2 o más declaraciones SELECT. No elimina las filas duplicadas entre varias declaraciones SELECT (devuelve todas las filas).

Cada declaración SELECT en UNION ALL debe tener la misma cantidad de campos en un conjunto de resultados con tipos de datos similares.

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

  • UNION elimina las filas duplicadas.
  • UNIÓN TODOS puede No Eliminar líneas duplicadas.

sintaxis

La sintaxis del operador UNION ALL en SQL es:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

parámetro o parámetro

expresión1, expresión2, expresión_n La columna o el cálculo que desea recuperar. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Para seleccionar las condiciones que debe cumplir un registro.

notas

  • Debe haber el mismo número de expresiones en ambas instrucciones SELECT
  • Las expresiones correspondientes en la instrucción SELECT deben tener el mismo tipo de datos. Por ejemplo: expresión1 debe ser del mismo tipo de datos en la primera y segunda instrucción SELECT.
  • Véase también operador UNION.

Ejemplo: un solo campo con el mismo nombre

Veamos cómo usar el operador SQL UNION ALL que devuelve un campo. En este ejemplo simple, los campos en las dos declaraciones SELECT tendrán el mismo nombre y tipo de datos.

Por ejemplo:

SELECT supplier_id
FROM suppliers
UNION ALL
SELECT supplier_id
FROM orders
ORDER BY supplier_id;

Este ejemplo de SQL UNION ALL devolverá id_proveedor varias veces en el conjunto de resultados si aparece el mismo valor en las tablas de proveedores y pedidos. Operador SQL UNION ALL No Eliminar duplicados. Si desea eliminar duplicados, intente usar el operador UNION.

Ahora, exploremos este ejemplo más a fondo con algunos datos.

Si su tabla de proveedores se completa con los siguientes registros:

Identificación del proveedor Nombre del proveedor
1000 microsoft
2000 Oráculo
3000 manzana
4000 Samsung

La tabla Pedidos se completa con los siguientes registros:

Solicitar ID fecha de orden Identificación del proveedor
1 2015-08-01 2000
2 2015-08-01 6000
3 2015-08-02 7000
4 2015-08-03 8000

y ejecutó la siguiente instrucción UNION ALL:

SELECT supplier_id
FROM suppliers
UNION ALL
SELECT supplier_id
FROM orders
ORDER BY supplier_id;

Obtendrá los siguientes resultados:

Identificación del proveedor
1000
2000
2000
3000
4000
6000
7000
8000

Como puede ver en este ejemplo, UNION ALL tomó todos los valores de ID de proveedor de las tablas de proveedores y pedidos y devolvió un conjunto de resultados combinados. Como puede ver, el valor de ID de proveedor 2000 aparece dos veces en el conjunto de resultados sin eliminar ningún duplicado.

Ejemplo: diferentes nombres de campo

Las columnas correspondientes en cada declaración SELECT no tienen que tener el mismo nombre, pero deben ser del mismo tipo de datos correspondiente.

Se vuelve un poco complicado cuando no tiene los mismos nombres de columna entre las declaraciones SELECT, especialmente cuando desea usar la cláusula ORDER BY para ordenar los resultados de la consulta.

Veamos cómo usar el operador UNION ALL con diferentes nombres de columna y ordenar los resultados de la consulta.

Por ejemplo:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id > 2000
UNION ALL
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 1;

En este ejemplo de SQL UNION ALL, debido a que los nombres de columna son diferentes entre las dos declaraciones SELECT, es más ventajoso referirse a las columnas en la cláusula ORDER BY por su posición en el conjunto de resultados.En este ejemplo, hemos ordenado los resultados por ID de proveedor/ID de empresa en orden ascendente, como en ORDER BY 1Los campos Supplier_id / company_id están en la posición 1 en el conjunto de resultados.

Ahora, exploremos más este ejemplo con los datos.

Si su tabla de proveedores se completa con los siguientes registros:

Identificación del proveedor Nombre del proveedor
1000 microsoft
2000 Oráculo
3000 manzana
4000 Samsung

y llene la tabla de la compañía con los siguientes registros:

ID de la compañía nombre de empresa
1000 microsoft
3000 manzana
7000 sony
8000 IBM

y ejecutó la siguiente instrucción UNION ALL:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id > 2000
UNION ALL
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 1;

Obtendrá los siguientes resultados:

Identificación del proveedor Nombre del proveedor
3000 manzana
3000 manzana
4000 Samsung
7000 sony
8000 IBM

En primer lugar, observe que el registro con id_proveedor 3000 aparece dos veces en el conjunto de resultados porque la consulta UNION ALL devuelve todas las filas y no elimina los duplicados.

En segundo lugar, observe que los encabezados de las columnas en el conjunto de resultados se denominan id_proveedor y nombre_proveedor. Esto se debe a que estos son los nombres de columna utilizados en la primera instrucción SELECT en UNION ALL.

Si lo desea, puede crear un alias para las columnas de la siguiente manera:

SELECT supplier_id AS ID_Value, supplier_name AS Name_Value
FROM suppliers
WHERE supplier_id > 2000
UNION ALL
SELECT company_id AS ID_Value, company_name AS Name_Value
FROM companies
WHERE company_id > 1000
ORDER BY 1;

Los encabezados de columna en el resultado ahora tendrán un alias para ID_Value de la primera columna y Name_Value de la segunda columna.

ID_Valor nombre_valor
3000 manzana
3000 manzana
4000 Samsung
7000 sony
8000 IBM
(Visited 8 times, 1 visits today)