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

252

¿Cuál es la diferencia entre JOINy UNION? ¿Puedo tener un ejemplo?

Oro
fuente
Cualquier DBS moderno, como MariaDB , implementa un comando UNION JOIN. Este es un comando SQL & nbsp; 3 , pero no es muy conocido o usado. Obtenga más información sobre UNION JOIN .
Auston el

Respuestas:

301

UNIONcoloca líneas de consultas una tras otra, mientras JOINcrea un producto cartesiano y lo subconjusta, operaciones completamente diferentes. Ejemplo trivial de UNION:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

ejemplo trivial similar de JOIN:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)
Alex Martelli
fuente
66
¿Puede decirme qué es un UNION-JOINy cómo puedo lograrlo en SQL estándar? Maria DB tiene un comando union join, pero otras bases de datos no. Gracias.
Erran Morad
73

Las uniones y uniones se pueden usar para combinar datos de una o más tablas. La diferencia radica en cómo se combinan los datos.

En términos simples, las combinaciones combinan datos en nuevas columnas . Si dos tablas se unen, los datos de la primera tabla se muestran en un conjunto de columnas junto a la columna de la segunda tabla en la misma fila.

Los sindicatos combinan datos en nuevas filas. Si dos tablas están "unidas" juntas, entonces los datos de la primera tabla están en un conjunto de filas, y los datos de la segunda tabla en otro conjunto. Las filas están en el mismo resultado.

Aquí hay una representación visual de una unión. Las columnas de la tabla A y B se combinan en un solo resultado.

ingrese la descripción de la imagen aquí

Cada fila del resultado contiene columnas de AMBAS tablas A y B. Las filas se crean cuando las columnas de una tabla coinciden con las columnas de otra. Esta coincidencia se llama condición de unión.

Esto hace que las uniones sean realmente geniales para buscar valores e incluirlos en los resultados. Esto suele ser el resultado de la desnormalización (inversión de la normalización) e implica el uso de la clave externa en una tabla para buscar valores de columna mediante el uso de la clave primaria en otra.

Ahora compare la descripción anterior con la de una unión. En una unión, cada fila dentro del resultado es de una tabla O de la otra. En una unión, las columnas no se combinan para crear resultados, las filas se combinan.

ingrese la descripción de la imagen aquí

Tanto las uniones como las uniones se pueden usar para combinar datos de una o más tablas en un solo resultado. Ambos se ocupan de esto es de diferentes maneras. Mientras que una combinación se usa para combinar columnas de diferentes tablas, la unión se usa para combinar filas.

Fuente

Humoyun Ahmad
fuente
44
Este es un ejemplo visual impresionante. Estaba bastante seguro de haber entendido después de las otras respuestas, pero esto lo aclaró por completo.
seadoggie01
Para el ejemplo de unión, técnicamente hablando, ¿no debería haber como 10 columnas para el resultado?
Bharath Ram
60

UNION combina los resultados de dos o más consultas en un único conjunto de resultados que incluye todas las filas que pertenecen a todas las consultas en la unión.

Al utilizar JOIN , puede recuperar datos de dos o más tablas en función de las relaciones lógicas entre las tablas. Las combinaciones indican cómo SQL debe usar los datos de una tabla para seleccionar las filas en otra tabla.

La operación UNION es diferente de usar JOIN que combinan columnas de dos tablas.

Ejemplo de UNION:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

Salida:

Column1    Column2
-------------------
1          2
3          4

ÚNASE Ejemplo:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

Esto generará todas las filas de ambas tablas para las cuales la condición a.Id = b.AFKIdes verdadera.

Kirtan
fuente
Join puede recuperar datos de una * o más tablas. No necesariamente dos
Kennet Celeste
51

Puede ver las mismas explicaciones esquemáticas para ambos, pero estas son totalmente confusas.

Para UNION:

Ingrese la descripción de la imagen aquí

Para unirse:

Ingrese la descripción de la imagen aquí

Java principal
fuente
99
Estas imágenes implican que FULL OUTER JOINes lo mismo UNION, que tienen diferencias
icc97
1
Esta respuesta señala que esas imágenes son confusas (qué IMO son), pero luego no explican por qué ni ofrecen ninguna aclaración sobre la pregunta original.
Josh D.
1
Cada imagen con diagramas explica perfectamente la situación. No hay una sola imagen que pueda fusionar todos los diagramas. Eso será más confuso.
Java Main
41

UNIRSE:

Una combinación se utiliza para mostrar columnas con los mismos o diferentes nombres de diferentes tablas. La salida mostrada tendrá todas las columnas mostradas individualmente. Es decir, las columnas se alinearán una al lado de la otra.

UNIÓN:

El operador de conjunto UNION se utiliza para combinar datos de dos tablas que tienen columnas con el mismo tipo de datos. Cuando se realiza una UNIÓN, los datos de ambas tablas se recopilarán en una sola columna que tenga el mismo tipo de datos.

Por ejemplo:

Vea las dos tablas que se muestran a continuación:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG

Ahora, para realizar un tipo JOIN, la consulta se muestra a continuación.

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG

Eso es una unión.

UNION significa que debe crear tablas o conjuntos de resultados con la misma cantidad y tipo de columnas y agregar esto a las tablas / conjuntos de resultados juntos. Mira este ejemplo:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
Ganesh Narayan Tharol
fuente
21

Son cosas completamente diferentes.

Una unión le permite relacionar datos similares en diferentes tablas.

Una unión devuelve los resultados de dos consultas diferentes como un único conjunto de registros.

adeshsuryan
fuente
9

Union hace que dos consultas se vean como una. Las uniones son para examinar dos o más tablas en una sola instrucción de consulta

James L
fuente
3

Las uniones y uniones se pueden usar para combinar datos de una o más tablas. La diferencia radica en cómo se combinan los datos.

En términos simples, las combinaciones combinan datos en nuevas columnas. Si dos tablas se unen, los datos de la primera tabla se muestran en un conjunto de columnas junto a la columna de la segunda tabla en la misma fila.

Los sindicatos combinan datos en nuevas filas. Si dos tablas están "unidas" juntas, entonces los datos de la primera tabla están en un conjunto de filas, y los datos de la segunda tabla en otro conjunto. Las filas están en el mismo resultado.

VAHEED
fuente
1

Recuerde que la unión combinará resultados ( SQL Server para estar seguro) (¿característica o error?)

select 1 as id, 3 as value
union
select 1 as id, 3 as value

id, valor

1,3

select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id

id, valor, id, valor

1,3,1,3

MonsterMagnet
fuente
66
Esto es de acuerdo a la norma ANSI, UNION ALL no combina los resultados
vzczc
1
Ver también UNIONvs UNION ALL stackoverflow.com/questions/49925/…
Jaider
0

1. La cláusula SQL Joins se usa para combinar registros de dos o más tablas en una base de datos. Unir es un medio para combinar campos de dos tablas mediante el uso de valores comunes a cada uno.

2. El operador SQL UNION combina el resultado de dos o más instrucciones SELECT. Cada instrucción SELECT dentro de UNION debe tener el mismo número de columnas. Las columnas también deben tener tipos de datos similares. Además, las columnas en cada instrucción SELECT deben estar en el mismo orden.

por ejemplo: tabla 1 clientes / tabla 2 pedidos

unir internamente:

SELECCIONE ID, NOMBRE, CANTIDAD, FECHA

DE CLIENTES


ÓRDENES INTERIORES


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Unión:

SELECCIONE ID, NOMBRE, CANTIDAD, FECHA


DE CLIENTES


IZQUIERDA UNIR PEDIDOS


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

UNIÓN

SELECCIONE ID, NOMBRE, CANTIDAD, FECHA DE CLIENTES


DERECHO UNIR PEDIDOS


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

ian
fuente
0

Usando UNION

UNION combina los resultados de dos o más consultas en un único conjunto de resultados que incluye todas las filas que pertenecen a todas las consultas en la unión.

Ejemplo de UNION:
SELECCIONE 121 AS [Columna1], 221 AS [Columna2]
UNIÓN
SELECCIONE 321 AS [Columna1], 422 AS [Columna2]
Salida:

Columna1 Columna2
-------------------
121 221
321 422

Utilizando JOINs

JOINs, puede recuperar datos de dos o más tablas en función de las relaciones lógicas entre las tablas.

ÚNASE Ejemplo:
SELECCIONE a.Column1, b.Column2 DESDE TblA a INNER JOIN TblB b ON a.Id = b.id

usuario6341745
fuente
-1

En resumen, son similares, ya que se combinan dos tablas o conjuntos de resultados, pero UNION es realmente para combinar conjuntos de resultados con el MISMO NÚMERO DE COLUMNAS con las COLUMNAS QUE TIENEN TIPOS DE DATOS SIMILARES. La ESTRUCTURA es la misma, solo se agregan nuevas filas.

En las combinaciones, puede combinar tablas / conjuntos de resultados con cualquier estructura posible, incluida una combinación cartesiana donde NO hay columnas compartidas / similares.

danbk99
fuente
-1

El operador UNION es solo para combinar dos o más instrucciones SELECT.

Mientras JOIN es para seleccionar filas de cada tabla, ya sea por el método interno, externo, izquierdo o derecho.

Consulte aquí y aquí . Hay una mejor explicación con ejemplos.

Nishad Up
fuente
-1

La operación de unión es el resultado combinado del agregado vertical de las filas, la operación de unión es el resultado combinado del agregado horizontal de las columnas.

R.Baldha
fuente
-3

Me gusta pensar que la diferencia general es:

  • SE UNE A LAS TABLAS
  • UNION (et all) combina consultas.
laurie
fuente
1
Esto plantea la pregunta: la unión se menciona en términos de "unión" y la unión se menciona en términos de "combinaciones" inexplicables. De todos modos, ¿qué crees que estarías agregando más allá de otras respuestas de 10 años altamente votadas que hacen que esto sea "útil"? (Retórica). Vea la flecha de votación al pasar el mouse por el texto.
philipxy