mysql union comprehensive tutorial with union examples
Este tutorial explica el comando MySQL UNION, sus tipos, Union vs Union All, y ejemplos para combinar datos de 2 o más consultas:
MySQL UNION se usa para combinar resultados de múltiples consultas SELECT en un solo conjunto de resultados. También es posible tener todas las consultas / operaciones complejas en las consultas SELECT y realizar UNION con otras declaraciones SELECT para producir un resultado combinado.
mejor programa de limpieza para windows 10
La característica predeterminada de una instrucción UNION sería eliminar las entradas o filas duplicadas del conjunto de filas resultante; sin embargo, también proporciona formas de recuperar los registros duplicados mediante la cláusula UNION ALL.
Lo que vas a aprender:
- Comprensión de UNION a través de la teoría de conjuntos
- ¿Qué problema resuelve MySQL UNION?
- MySQL UNION Vs UNION TODOS
- Conclusión
Comprensión de UNION a través de la teoría de conjuntos
La operación UNION podría entenderse muy bien a partir de los principios de la teoría SET.
Supongamos que tenemos las tablas A y B representadas por los conjuntos a continuación y tienen algunos datos superpuestos (o también pueden no estar relacionados en absoluto). UNION incluirá la combinación de datos de ambas tablas.
Veamos un ejemplo en el que los conjuntos A y B tienen algunos elementos comunes. La UNION contendrá todos los valores del conjunto A y B con los valores duplicados omitidos.
Ahora bien, ¿qué pasa si los conjuntos A y B están separados y no contienen ningún elemento común? Aquí también, el UNION devolverá el mismo resultado.
Analicemos el escenario en el que hay elementos superpuestos entre conjuntos y queremos que los valores duplicados también aparezcan en el conjunto de resultados.
MySQL proporciona una forma de hacerlo usando la opción UNION ALL como se muestra en la imagen de abajo.
¿Qué problema resuelve MySQL UNION?
MySQL UNION se usa cuando tiene datos similares en 2 o más tablas y desea ver una vista combinada de los datos contenidos en ambas tablas en lugar de ejecutar declaraciones SELECT para tablas individuales.
Por ejemplo - Supongamos que hay 2 tablas: Empleado y Estudiante. Y está trabajando en una base de datos de personas que solo quiere tener el nombre, la edad y la fecha de nacimiento de todos los empleados y estudiantes.
Sin UNION, deberá ejecutar consultas SELECT separadas para ambas tablas y luego realizar el cálculo deseado con el conjunto de resultados obtenido.
Sintaxis de MySQL UNION
Las consultas siguientes devolverán una UNION de 2 o más de 2 declaraciones SELECT.
|_+_|Intentemos ver diferentes componentes de la sintaxis
- Podemos ver que es posible combinar múltiples consultas SELECT con UNION para obtener el conjunto de filas resultante.
- Nombre de la columna y tipos de datos: es importante comprender que las columnas que queremos combinar deben tener el mismo tipo de datos o uno compatible. Por ejemplo: si tiene la columna1 como STRING, la columna3 también debería ser STRING (o compatible con STRING).
- Los nombres y las posiciones de las columnas se determinan a partir de la primera instrucción SELECT en la consulta UNION. Por ejemplo, en la sintaxis anterior: column1 y column2 se nombran como columnas de encabezado en el conjunto de resultados y los valores de column3 y column4 se asignan a column1 y column2, respectivamente.
- Los resultados de una consulta UNION eliminan por defecto las entradas duplicadas. Por ejemplo, en este caso, si hay una entrada duplicada que tiene una coincidencia exacta y tiene los mismos valores para la columna1 y la columna2, esas filas se omitirán del conjunto de resultados.
Si se desean duplicados, podemos usar la opción 'TODOS' junto con la UNIÓN.
El uso de DISTINTO está implícito de forma predeterminada. Tenga en cuenta que también podría especificarse explícitamente para tener más legibilidad.
Veamos un ejemplo de muestra de una consulta UNION.
Suponga que hay 2 tablas, empleado y estudiante, cada una con información personal.
|_+_|Ahora, ingrese algunos datos ficticios en estas dos tablas como se muestra a continuación:
|_+_|Como puede ver arriba, hemos agregado intencionalmente una fila que tiene los mismos atributos de nombre, edad y fecha de nacimiento.
Veamos ahora cómo podemos combinar los datos en estas 2 tablas usando comandos UNION. Consultaremos el nombre de usuario y la edad de ambas tablas.
UNIÓN simple
Consulta:
|_+_|Verá 9 registros en el resultado (lo que significa que la consulta anterior ha omitido la entrada duplicada).
Producción:
nombre | edad |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | 20 |
Akash | 22 |
Shirley | 19 |
Joana | 21 |
UNION con UNION ALL
El uso de UNION con la cláusula ALL garantizará que las entradas duplicadas también se muestren.
Consulta:
|_+_|Producción:
nombre | edad |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | 20 |
Akash | 22 |
Shirley | 19 |
Joana | 21 |
Kartik | 20 |
UNIÓN con condición
Agreguemos condiciones a las declaraciones SELECT donde queremos datos de los empleados menores de 30 años y Estudiantes menores de 25 años.
Consulta:
|_+_|Producción:
nombre | edad |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | 20 |
Akash | 22 |
Shirley | 19 |
Joana | 21 |
Como puede ver arriba, el conjunto de resultados incluye el resultado combinado con las condiciones SELECT individuales validadas.
Solicitud de resultados de UNION
Los resultados de una consulta UNION están desordenados de forma predeterminada.
Para imponer un orden por una columna existente en el conjunto resultante, se puede especificar una cláusula ORDER BY al final del comando UNION.
Usemos los mismos datos de Empleado / Estudiante y ordenemos los resultados de UNION en orden ascendente por edad.
|_+_|Producción:
nombre | edad |
---|---|
Shirley | 19 |
Kartik | 20 |
Joana | 21 |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
El conjunto de resultados anterior está ordenado por valores de edad en orden creciente. También podemos usar alias de columna para hacer referencia a las columnas de la cláusula ORDER BY.
Por ejemplo: - Una consulta como la siguiente también producirá el mismo resultado.
|_+_|Hay otra forma de usar la cláusula ORDER BY con solo mencionar la posición de la columna en lugar del nombre de la columna.
Por ejemplo: En la consulta UNION anterior, estamos seleccionando el nombre y la edad, lo que implica que estas columnas están en las posiciones 1 y 2, respectivamente.
Entonces, para ORDER BY age, simplemente podemos especificar la posición en lugar del nombre real de la columna.
Por lo tanto, la consulta siguiente también arrojará el mismo resultado.
|_+_|MySQL UNION Vs UNION TODOS
MySQL proporciona 2 variantes de UNION, es decir UNIÓN DISTINTO y UNIÓN TODOS
Tenga en cuenta que DISTINCT está implícito de forma predeterminada, incluso si no se indica.
La principal diferencia entre ambos es que UNION ALL permite combinar y devolver filas duplicadas también, mientras que UNION solo devuelve las filas combinadas eliminando duplicados.
La siguiente tabla explica los detalles:
Parámetro | UNIÓN | UNIÓN TODOS |
---|---|---|
Definición | Es equivalente a UNION DISTINCT: ignora las filas de datos duplicadas mientras devuelve el resultado | Devuelve todas las filas, incluidos los duplicados |
Sintaxis | SELECCIONAR {columnList} DE {table1} UNIÓN SELECCIONAR {columnList} DE {table2} | SELECCIONAR {columnList} DE {table1} UNIÓN TODOS SELECCIONAR {columnList} DE {table2} |
Requerimientos de datos | Los datos que se combinan deben tener tipos de datos similares y deben obtenerse en el mismo orden cuando se obtienen de varias tablas | Igual que UNION |
Preguntas frecuentes
P # 1) ¿Union es más rápido que JOIN?
Responder: UNION y JOIN se utilizan para prácticamente 2 propósitos diferentes.
Técnicamente hablando, UNION es mucho más rápido que JOIN (especialmente para grandes conjuntos de datos) ya que UNION simplemente concatena filas de datos de las declaraciones SELECT individuales.
P # 2) ¿Qué es el operador UNION ALL?
Responder: Al igual que UNION, el operador UNION ALL también devuelve UNION entre 2 consultas SELECT, pero la diferencia es que también contiene las filas / entradas duplicadas.
P # 3) ¿Cuál es la diferencia entre UNION y JOIN?
Responder: Tanto UNION como JOIN se utilizan para combinar datos de 2 o más tablas. Pero hay una gran diferencia en términos del conjunto de resultados obtenido y la forma en que se obtienen los datos.
Las similitudes y diferencias entre JOIN y UNION se enumeran en la siguiente tabla:
UNIÓN | UNIRSE |
---|---|
Combina datos de varias tablas | Combina datos de varias tablas |
No requiere ninguna condición específica para recopilar o combinar datos | JOIN funciona en una condición JOIN que se requiere para validar los datos que vienen en el conjunto de resultados |
Los datos de diferentes tablas se toman como diferentes filas del conjunto de resultados | Los datos de diferentes tablas se combinan en una sola fila; por ejemplo, una fila en el conjunto de resultados podría contener 2 columnas de la tabla 1, 3 columnas de la tabla 2, etc., según la condición JOIN y la consulta SELECT |
Los UNION son simples y directos | Las UNIONES requieren condiciones complejas y, dependiendo de las necesidades, se podrían usar múltiples tipos de uniones como INNER / OUTER, etc. |
Conclusión
En este tutorial, hemos aprendido a usar MySQL UNION para combinar datos de 2 o más declaraciones SELECT.
La declaración UNION es realmente útil para recopilar datos similares de grandes conjuntos de tablas diferentes y luego ejecutar un análisis de los datos combinados.
El comando UNION también admite una cláusula ALL que también permite recuperar los registros duplicados.
Lectura recomendada
- ¿Qué es MySQL y por qué se utiliza?
- Diferencia entre SQL Vs MySQL Vs SQL Server (con ejemplos)
- Unión interna vs unión externa: diferencia exacta con ejemplos
- Tutorial de MySQL JOIN: interno, externo, cruzado, izquierdo, derecho y propio
- Tutorial de creación de vistas de MySQL con ejemplos de código
- Tutorial de creación de tablas de MySQL con ejemplos
- Tutorial de declaración de actualización de MySQL: ejemplos y sintaxis de consulta de actualización
- Las 40 mejores preguntas y respuestas de las entrevistas de MySQL (preguntas de 2021)