CROSS JOIN vs INNER JOIN en SQL


150

¿Cuál es la diferencia entre CROSS JOINy INNER JOIN?

CROSS JOIN:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status], 
FROM   
    Customers 
CROSS JOIN 
    Movies

UNIR INTERNAMENTE:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status]
FROM   
    Customers 
INNER JOIN 
    Movies ON Customers.CustomerID = Movies.CustomerID

¿Cuál es mejor y por qué usaría cualquiera?


15
CROSS JOINdará como resultado todas las combinaciones posibles de las tablas. por ejemplo, Tabla1 con 100 filas y Tabla2 con 100 filas dará como resultado 10000 registros.
bummi

x CROSS JOIN yesx INNER JOIN y ON 1=1
philipxy

Respuestas:


119

La combinación cruzada no combina las filas, si tiene 100 filas en cada tabla con una coincidencia de 1 a 1, obtiene 10.000 resultados, Innerjoin solo devolverá 100 filas en la misma situación.

Estos 2 ejemplos devolverán el mismo resultado:

Cruz unirse

select * from table1 cross join table2 where table1.id = table2.fk_id

Unir internamente

select * from table1 join table2 on table1.id = table2.fk_id

Usa el último método


77
Y creo que puedes escribir select * from table1 cross join table2 where table1.id = table2.fk_idcomo select * from table1, table2 where table1.id = table2.fk_id(reemplazando cross joincon a ,)
modulitos

55
@Lucas, esa es la sintaxis antigua para las uniones, pero funcionará. Sin embargo, recomiendo la versión de Clausen, mucho más legible.
iliketocode

1
¿Qué quieres decir con 1 a 1 partido? ¿Qué quiere decir "misma situación"
Jwan622

1
@iliketocode "sintaxis antigua para combinaciones" no está clara, es mejor que hable sobre los estándares SQL-89 y SQL-92
Ivanzinho

Su INNER JOIN "100" es un caso especial que no ha explicado y no ha explicado el caso general.
Philip

186

Aquí está el mejor ejemplo de Cross Join y Inner Join.

Considere las siguientes tablas

MESA : Teacher

x------------------------x
| TchrId   | TeacherName | 
x----------|-------------x
|    T1    |    Mary     |
|    T2    |    Jim      |
x------------------------x

MESA : Student

x--------------------------------------x
|  StudId  |    TchrId   | StudentName | 
x----------|-------------|-------------x            
|    S1    |     T1      |    Vineeth  |
|    S2    |     T1      |    Unni     |
x--------------------------------------x

1. UNIÓN INTERNA

La unión interna selecciona las filas que satisfacen tanto la tabla .

Considere que necesitamos encontrar los maestros que son maestros de clase y sus estudiantes correspondientes. En esa condición, necesitamos aplicar JOINo lo INNER JOINharemos

ingrese la descripción de la imagen aquí

Consulta

SELECT T.TchrId,T.TeacherName,S.StudentName 
FROM #Teacher T
INNER JOIN #Student S ON T.TchrId = S.TchrId

Resultado

x--------------------------------------x
|  TchrId  | TeacherName | StudentName | 
x----------|-------------|-------------x            
|    T1    |     Mary    |    Vineeth  |
|    T1    |     Mary    |    Unni     |
x--------------------------------------x

2. UNIÓN CRUZADA

La combinación cruzada selecciona todas las filas de la primera tabla y todas las filas de la segunda tabla y se muestra como producto cartesiano, es decir, con todas las posibilidades.

Consideremos que necesitamos encontrar a todos los maestros en la escuela y a los estudiantes, independientemente de los maestros de clase. CROSS JOIN.

ingrese la descripción de la imagen aquí

Consulta

SELECT T.TchrId,T.TeacherName,S.StudentName 
FROM #Teacher T
CROSS JOIN #Student S 

Resultado

x--------------------------------------x
|  TchrId  | TeacherName | StudentName | 
x----------|-------------|-------------x            
|    T2    |     Jim     |    Vineeth  |
|    T2    |     Jim     |    Unni     |
|    T1    |     Mary    |    Vineeth  |
|    T1    |     Mary    |    Unni     |
x--------------------------------------x

1
La clave de la Figura 2 es compleja: rodea elementos (irrelevantes de color) de un argumento de CROSS JOIN y un número (valor irrelevante) es una fila y una línea (irrelevante de color) es una fila de resultados. Para las tablas como bolsas es no un diagrama de Venn: para las filas como valores, que es malo ; para las filas como elementos no se pueden compartir. Para tablas como conjuntos no necesita un diagrama de Venn. La Figura 1 es un terrible intento común de explicar JOIN. Su clave también es compleja: es solo para tablas como conjuntos y solo equijoin y solo un valor; También representa la entrada de manera diferente a la salida. Escribir es para JOIN en general.
philipxy

La Figura 1 es útil y correcta como el primero de los 4 colores de los diagramas de Venn de círculo que se intersectan para: (INTERIOR) UNIR frente a IZQUIERDA, IZQUIERDA, DERECHA Y COMPLETA (EXTERIOR) pero no frente a UNIÓN CRUZADA. Las filas de intersección están en JOIN, las filas izquierda / derecha son filas adicionales (nula-extendida) en JOIN IZQUIERDA / DERECHA. Se incluye CROSS JOIN como un caso especial de (interior) JOIN donde no hay filas de la no-intersección.
philipxy

1
Gracias por tu sugerencia. De todos modos, el OP ha pedido la diferencia entre estas dos uniones. He respondido a esta pregunta de tal manera que cualquier principiante pueda comprender fácilmente la diferencia entre ellos. Como dijiste, no he dado claves como en un entorno de producción. Es solo un ejemplo para entender fácilmente. Y para Cross Join, ¿crees que no devuelve todas las filas a menos Whereque se dé una cláusula? De tus comentarios, ¡hay más posibilidades de que un principiante se confunda! @philipxy
Sarath Avanavu

1
Mis comentarios señalan que los diagramas son difíciles de interpretar incluso si uno sabe lo que están tratando de decir y son inapropiados para este tema. Por "clave" (de la Figura 2 o 1) quise decir "explicación de lo que significan las partes de un diagrama". Por "escribirlo" me refiero a tratar de escribir muy claramente lo que significan las partes del diagrama. ¡Encontrará que los diagramas son complicados y no demuestran la unión cruzada versus la unión interna! Es decir, no pertenecen a tu respuesta. Las claves relacionales de la tabla PS no tienen ningún papel en la explicación de lo que hacen JOIN. PPS La única diferencia entre las uniones es INNER JOIN tiene un ON.
2015

Mire en W3Schools w3schools.com/sql/sql_join_inner.asp donde han dado un tipo de diagrama similar para INNER JOIN. Asegúrese de tener razón antes de hacer comentarios @philipxy
Sarath Avanavu

69

CROSS JOIN = (INTERIOR) JOIN = coma (",")

TL; DR La única diferencia entre SQL CROSS JOIN, (INNER) JOIN y la coma (",") (además de que la coma tiene menor prioridad para el orden de evaluación) es que (INNER) JOIN tiene un ON mientras que CROSS JOIN y la coma no.


Re productos intermedios

Los tres producen un producto "cartesiano" relacional conceptual intermedio de estilo SQL, también conocido como unión cruzada, de todas las combinaciones posibles de una fila de cada tabla. Está ENCENDIDO y / o DONDE eso reduce el número de filas. Violín de SQL

El estándar SQL define <comma> a través del producto (7.5 1.b.ii), <cross join> a través de <comma> (7.7 1.a) y JOIN ON <condición de búsqueda> a través de <comma> más DONDE (7.7 1.b )

Como dice Wikipedia:

Cruz unirse

CROSS JOIN devuelve el producto cartesiano de las filas de las tablas en la unión. En otras palabras, producirá filas que combinan cada fila de la primera tabla con cada fila de la segunda tabla.

Unir internamente

[...] El resultado de la combinación se puede definir como el resultado de tomar primero el producto cartesiano (o combinación cruzada) de todos los registros en las tablas (combinando cada registro en la tabla A con cada registro en la tabla B) y luego devolviendo todos los registros que satisfacen el predicado de unión.

La "notación de unión implícita" simplemente enumera las tablas para unirse, en la cláusula FROM de la instrucción SELECT, usando comas para separarlas. Por lo tanto, especifica una unión cruzada

Re EXTERIOR Las juntas y utilizando EN DONDE vs en ellos ver Condiciones en combinación izquierda (OUTER JOIN) vs INNER JOIN .

¿Por qué comparar columnas entre tablas?

Cuando no hay filas duplicadas:

Cada tabla contiene las filas que hacen una declaración verdadera a partir de una determinada plantilla de declaración de relleno en blanco [con nombre]. (Hace una proposición verdadera de-- satisface --un cierto predicado (característico) .)

  • Una tabla base contiene las filas que hacen una declaración verdadera de alguna plantilla de declaración dada por DBA:

    /* rows where
    customer C.CustomerID has age C.Age and ...
    */
    FROM Customers C
  • El producto intermedio de una unión contiene las filas que hacen una declaración verdadera del AND de las plantillas de sus operandos:

    /* rows where
        customer C.CustomerID has age C.Age and ...
    AND movie M.Movie is rented by customer M.CustomerID and ...
    */
    FROM Customers C CROSS JOIN Movies M
  • ENCENDIDO Y DONDE las condiciones se ANDAN para dar una plantilla adicional. El valor es nuevamente las filas que satisfacen esa plantilla:

    /* rows where
        customer C.CustomerID has age C.Age and ...
    AND movie M.Movie is rented by customer M.CustomerID and ...
    AND C.CustomerID = M.CustomerID
    AND C.Age >= M.[Minimum Age]
    AND C.Age = 18
    */
    FROM Customers C INNER JOIN Movies M
    ON C.CustomerID = M.CustomerID
    AND C.Age >= M.[Minimum Age]
    WHERE C.Age = 18

En particular, comparar columnas para la igualdad (SQL) entre tablas significa que las filas guardadas del producto de las partes de las tablas unidas de la plantilla tienen el mismo valor (no NULL) para esas columnas. Es una coincidencia que muchas filas se eliminen típicamente mediante comparaciones de igualdad entre tablas; lo que es necesario y suficiente es caracterizar las filas que desea.

¡Simplemente escriba SQL para la plantilla para las filas que desee!

Consulte el significado de las consultas (y las tablas frente a las condiciones):
¿Cómo obtener datos coincidentes de otra tabla SQL para dos columnas diferentes: Unión interna y / o Unión?
¿Hay alguna regla general para construir una consulta SQL a partir de una descripción legible por humanos?

Sobrecarga de "unión cruzada"

Lamentablemente, el término "unión cruzada" se usa para:

  • El producto intermedio.
  • CROSS JOIN.
  • (INTERIOR) ÚNASE con un ENCENDIDO o DONDE que no compare ninguna columna de una tabla con ninguna columna de otra. (Dado que eso tiende a devolver muchas de las filas de productos intermedios).

Estos diversos significados se confunden. (Por ejemplo, como en otras respuestas y comentarios aquí).

Uso de CROSS JOIN vs (INNER) JOIN vs comma

La convención común es:

  • Use CROSS JOIN cuando y solo cuando no compare columnas entre tablas. Eso es para mostrar que la falta de comparaciones fue intencional.
  • Use (INNER) JOIN con ON cuando y solo cuando compare columnas entre tablas. (Además, posiblemente otras condiciones).
  • No uses coma.

Por lo general, también las condiciones que no están en pares de tablas se mantienen para un DÓNDE. Pero es posible que tengan que colocarse en una (n INNER) JOIN ON para obtener las filas apropiadas para el argumento de una DERECHA, IZQUIERDA o COMPLETA (EXTERIOR).

Re "No usar comas" Mezclar comas con JOIN explícito puede inducir a error porque la coma tiene menor prioridad. Pero dado el papel del producto intermedio en el significado de CROSS JOIN, (INNER) JOIN y la coma, los argumentos para la convención anterior de no usarlo son inestables. Una CROSS JOIN o una coma es como una (INNER) JOIN que está en una condición VERDADERA. Un producto intermedio, ON y WHERE, todos introducen un AND en el predicado correspondiente. Sin embargo, se puede pensar en INNER JOIN ON, por ejemplo, generar una fila de salida solo cuando se encuentra un par de filas de entrada que satisfacen la condición ON, sin embargo, devuelve las filas de unión cruzada que satisfacen la condición. La única razón por la cual ON tenía que complementar la coma en SQL era escribir OUTERUniones. Por supuesto, una expresión debe aclarar su significado; pero lo que está claro depende de lo que se entiende que significan las cosas.

Re Diagramas de Venn Un diagrama de Venn con dos círculos que se cruzan puede ilustrar la diferencia entre las filas de salida para las uniones INNER, LEFT, RIGHT y FULL para la misma entrada. Y cuando el ON es incondicionalmente VERDADERO, el resultado de INNER JOIN es el mismo que CROSS JOIN. También puede ilustrar las filas de entrada y salida para INTERSECT, UNION & EXCEPT. Y cuando ambas entradas tienen las mismas columnas, el resultado INTERSECT es el mismo que para SQL NATURAL JOIN estándar, y el resultado EXCEPT es el mismo que para ciertos modismos que involucran IZQUIERDA DERECHA E IZQUIERDA. Pero no ilustra cómo funciona (INNER) JOIN en general. Eso parece plausible a primera vista . Puede identificar partes de entrada y / o salida paracasos especiales de ON, PK (claves primarias), FK (claves foráneas) y / o SELECT. Todo lo que tiene que hacer para ver esto es identificar exactamente cuáles son los elementos de los conjuntos representados por los círculos . (Que las presentaciones confusas nunca dejan en claro). (Recuerde que, en general, para las filas de salida de las combinaciones tienen encabezados diferentes de las filas de entrada . Y las tablas SQL son bolsas, no conjuntos de filas con NULL ).


66
+1 Me gusta más esta respuesta: otros parecen implicar que los resultados serán diferentes, pero si la cláusula "ON" se reemplaza por "WHERE", los resultados son los mismos
Ronnie

44
+1 Gracias por aclarar que omitir la cláusula ON en un INNER JOIN producirá exactamente los mismos resultados que usar CROSS JOIN
Cerno

"producto cruzado cartesiano conceptual intermedio de estilo SQL": ¿es esa otra forma de decir, "no es realmente un conjunto de pares ordenados, pero no puedo evitar decir 'Producto cartesiano'"? :) Como no soy matemático, el único contexto en el que me he encontrado con el término 'producto cartesiano' es cuando alguien explica SQL CROSS JOIN. Me pregunto con qué frecuencia alguien llega a SQL ya familiarizado con el producto cartesiano pero no puede darse cuenta CROSS JOIN.
cuando el

1
@onedaywhen Operator Cartesian product devuelve un conjunto de tuplas ordenadas dadas algunas series. El resultado es un producto cartesiano. Las culturas relacionales y SQL lamentablemente mal uso / sobrecarga de "producto cartesiano" para los operadores que evocan pero no son producto cartesiano. Por ejemplo, Wikipedia! Me opongo a eso, simplemente confunde / confunde. Sin embargo, aquí desafortunadamente solo describo de manera difusa cómo funciona la combinación cruzada de SQL en mis propias palabras y difiero a Wikipedia. Yo denomino el resultado "conceptual al estilo SQL cartesiana cruz producto intermedio". Sí, "cartesiano" es para aquellos tristemente ya corruptos que lo usan / esperan.
philipxy

1
Esta es la respuesta correcta, a diferencia de las respuestas mejor calificadas. Es típico con SQL que las explicaciones superficiales, de sonido razonable y bien formateadas con imágenes dominen el contenido educativo, a pesar de no comprender o definir incluso los conceptos básicos del lenguaje.
Charles Roddie

23

Unir internamente

La unión que muestra solo las filas que tienen una coincidencia en ambas tablas unidas se conoce como unión interna. Esta es la unión predeterminada en la consulta y el Diseñador de vistas.

Sintaxis para la unión interna

SELECT t1.column_name,t2.column_name
FROM table_name1 t1
INNER JOIN table_name2 t2
ON t1.column_name=t2.column_name

Cross Join

Una unión cruzada que produce el producto cartesiano de las tablas que participan en la unión. El tamaño de un producto cartesiano es el número de filas en la primera tabla multiplicado por el número de filas en la segunda tabla.

Sintaxis para Cross Join

SELECT * FROM table_name1
CROSS JOIN table_name2

O podemos escribirlo de otra manera también

SELECT * FROM table_name1,table_name2

Ahora verifique la consulta a continuación para la unión cruzada

Ejemplo

SELECT * FROM UserDetails
CROSS JOIN OrderDetails

O

SELECT * FROM UserDetails, OrderDetails


8

CROSS JOIN

Como expliqué en este artículo , CROSS JOIN está destinado a generar un producto cartesiano.

Un producto cartesiano toma dos conjuntos A y B y genera todas las permutaciones posibles de registros de pares a partir de dos conjuntos de datos dados.

Por ejemplo, suponiendo que tiene las siguientes tablas ranksy suitsbases de datos:

Las mesas de rangos y trajes

Y rankstiene las siguientes filas:

| name  | symbol | rank_value |
|-------|--------|------------|
| Ace   | A      | 14         |
| King  | K      | 13         |
| Queen | Q      | 12         |
| Jack  | J      | 11         |
| Ten   | 10     | 10         |
| Nine  | 9      |  9         |

Mientras que la suitstabla contiene los siguientes registros:

| name    | symbol |
|---------|--------|
| Club    |       |
| Diamond |       |
| Heart   |       |
| Spade   |       |

Como CROSS JOIN consulta como la siguiente:

SELECT
   r.symbol AS card_rank,
   s.symbol AS card_suit
FROM
   ranks r
CROSS JOIN
   suits s

generará todas las permutaciones posibles de ranksy suitespares:

| card_rank | card_suit |
|-----------|-----------|
| A         |          |
| A         |          |
| A         |          |
| A         |          |
| K         |          |
| K         |          |
| K         |          |
| K         |          |
| Q         |          |
| Q         |          |
| Q         |          |
| Q         |          |
| J         |          |
| J         |          |
| J         |          |
| J         |          |
| 10        |          |
| 10        |          |
| 10        |          |
| 10        |          |
| 9         |          |
| 9         |          |
| 9         |          |
| 9         |          |

UNIR INTERNAMENTE

Por otro lado, INNER JOIN no devuelve el producto cartesiano de los dos conjuntos de datos de unión.

En cambio, INNER JOIN toma todos los elementos de la tabla del lado izquierdo y los compara con los registros de la tabla del lado derecho para que:

  • si ningún registro coincide con la tabla del lado derecho, la fila del lado izquierdo se filtra del conjunto de resultados
  • para cualquier registro coincidente en la tabla del lado derecho, la fila del lado izquierdo se repite como si hubiera un producto cartesiano entre ese registro y todos sus registros secundarios asociados en la tabla del lado derecho.

Por ejemplo, suponiendo que tengamos una relación de tabla de uno a muchos entre las tablas principal posty secundaria post_commentque se ve de la siguiente manera:

Relación de tabla uno a muchos

Ahora, si la posttabla tiene los siguientes registros:

| id | title     |
|----|-----------|
| 1  | Java      |
| 2  | Hibernate |
| 3  | JPA       |

y la post_commentstabla tiene estas filas:

| id | review    | post_id |
|----|-----------|---------|
| 1  | Good      | 1       |
| 2  | Excellent | 1       |
| 3  | Awesome   | 2       |

Una consulta INNER JOIN como la siguiente:

SELECT
   p.id AS post_id,
   p.title AS post_title,
   pc.review  AS review
FROM post p
INNER JOIN post_comment pc ON pc.post_id = p.id

va a incluir todos los postregistros junto con todos sus asociados post_comments:

| post_id | post_title | review    |
|---------|------------|-----------|
| 1       | Java       | Good      |
| 1       | Java       | Excellent |
| 2       | Hibernate  | Awesome   |

Básicamente, puede pensar en INNER JOIN como una CROSS JOIN filtrada donde solo se guardan los registros coincidentes en el conjunto de resultados final.

Para obtener más detalles sobre cómo funciona INNER JOIN, consulte también este artículo .


"INNER JOIN no devuelve el producto cartesiano de los dos conjuntos de datos de unión" es demasiado cuando x INNER JOIN y en 1 = 1 sí lo devuelve. Entonces, es "En cambio" cuando lo que intentas decir de hecho lo devuelve (por supuesto) para la condición 1 = 1. Excepto que el lenguaje en las viñetas no describe claramente el resultado de una unión interna. Lo que sí lo describe es que es una unión cruzada menos filas que no cumplen con la condición. Del mismo modo, su lenguaje de combinación cruzada utilizando "combinaciones" no está claro.
philipxy

7

SQL Server también acepta la notación más simple de:

SELECT A.F, 
       B.G, 
       C.H 
  FROM TABLE_A A, 
       TABLE_B B, 
       TABLE_C C
 WHERE A.X = B.X 
   AND B.Y = C.Y

Usando esta notación más simple, uno no necesita preocuparse por la diferencia entre uniones internas y cruzadas. En lugar de dos cláusulas "ON", hay una sola cláusula "WHERE" que hace el trabajo. Si tiene alguna dificultad para averiguar qué cláusulas "UNIRSE" "ENCENDIDO" van a dónde, abandone la notación "UNIRSE" y use la más simple de arriba.

No es hacer trampa.


2

Al escribir consultas utilizando uniones internas, los registros obtendrán de ambas tablas si la condición se cumple en ambas tablas, es decir, coincidencia exacta de la columna común en ambas tablas.

Mientras se escribe la consulta usando la unión cruzada, el resultado es como el producto cartesiano del no de registros en ambas tablas. ejemplo, si table1 contiene 2 registros y table2 contiene 3 registros, el resultado de la consulta es 2 * 3 = 6 registros.

Así que no te apuntes hasta que lo necesites.


2
¡Solo si falta la cláusula WHERE!
epitka

2

La unión cruzada y la unión interna son las mismas, con la única diferencia de que en la unión interna filtramos booleanmente algunos de los resultados del producto cartesiano

table1
x--------------------------------------x
|  fieldA  |    fieldB   |    fieldC   | 
x----------|-------------|-------------x            
|    A     |      B      |    option1  |
|    A     |      B1     |    option2  |
x--------------------------------------x

table2
x--------------------------------------x
|  fieldA  |    fieldB   |    fieldC   | 
x----------|-------------|-------------x            
|    A     |      B      |    optionB1 |
|    A1    |      B1     |    optionB2 |
x--------------------------------------x

 cross join
  A,B,option1,A,B,optionB1
  A,B,option1,A1,B1,optionB2
  A,B1,option2,A,B,optionB1
  A,B1,option2,A1,B1,optionB2

 inner join on field1 (only with the value is the same in both tables)
  A,B,option1,A,B,optionB1
  A,B1,option2,A,B,optionB1

 inner join on field1
  A,B,option1,A,B,optionB1

Es en el diseño de nuestros datos donde decidimos que solo hay un caso del campo que estamos utilizando para la unión. Unir solo cruzar unir ambas tablas y obtener solo las líneas que logran una expresión booleana especial.

Tenga en cuenta que si los campos en los que hacemos nuestras Uniones serían nulos en ambas tablas, pasaríamos el filtro. Depende de nosotros o del fabricante de la base de datos agregar reglas adicionales para evitar o permitir nulos. Cumpliendo con lo básico, es solo una unión cruzada seguida de un filtro.


0

La combinación interna dará el resultado de registros coincidentes entre dos tablas, mientras que la combinación cruzada le ofrece las posibles combinaciones entre dos tablas.


0

A = {1,5,3,4,6,7,9,8} B = {2,8,5,4,3,6,9}

cross join actuar como producto cartesiano A ✖ B = {1,2}, {1,8} ..., {5,2}, {5,8}, {5,5} ..... {3,3} ..., {6,6} .... {8,9} y devolvió este largo conjunto de resultados ...

cuando procese inner joinsu producto a través del producto cartesiano y elija pares coincidentes ... si piensa que esto ordenó pares como las claves principales de dos tablas y en la cláusula busque A = B entoncesinner join elija {5,5}, {4,4}, {6,6} , {9,9} y devolvió la columna solicitada en la cláusula select relacionada con estos identificadores.

si cross joinen a = b, entonces es el mismo conjunto de resultados que inner join. en ese caso también uso inner join.


-1

Depende de la salida que esperes.

Una unión cruzada hace coincidir todas las filas de una tabla con todas las filas de otra tabla. Una unión interna coincide en un campo o campos. Si tiene una tabla con 10 filas y otra con 10 filas, las dos combinaciones se comportarán de manera diferente.

La unión cruzada tendrá 100 filas devueltas y no estarán relacionadas, solo lo que se llama un producto cartesiano. La unión interna hará coincidir los registros entre sí. Suponiendo que uno tiene una clave principal y que es una clave externa en el otro, obtendría 10 filas devueltas.

Una unión cruzada tiene una utilidad general limitada, pero existe para completar y describe el resultado de unir tablas sin relaciones agregadas a la consulta. Puede usar una combinación cruzada para hacer listas de combinaciones de palabras o algo similar. Una unión interna, por otro lado, es la unión más común.


No confundir a todos. Traté de acortar la respuesta. Esta es la mejor respuesta corta posible.
Shrikant Jadhav
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.