UNIÓN EXTERIOR COMPLETA vs UNIÓN COMPLETA

81

Simplemente jugando con consultas y ejemplos para comprender mejor las combinaciones. Me doy cuenta de que en SQL Server 2008, las siguientes dos consultas dan los mismos resultados:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name

¿Están realizando exactamente la misma acción para producir los mismos resultados, o me encontraría con resultados diferentes en un ejemplo más complicado? ¿Es esta terminología simplemente intercambiable?

CptSupermrkt
fuente
2
Sí, ambas consultas me dan los mismos resultados en SQL Server 2008 R2.
CptSupermrkt

Respuestas:

102

De hecho, son iguales. LEFT OUTER JOINes igual que LEFT JOINy RIGHT OUTER JOINes igual que RIGHT JOIN. Es una forma más informativa de comparar INNER Join.

Consulte este artículo de Wikipedia para obtener más detalles.

John Woo
fuente
3
Perfecto gracias. Tantos tutoriales con los que me he encontrado los usan de acuerdo con su propio estilo, sin notar que son iguales.
CptSupermrkt
2
representación visual de uniones: codeproject.com/Articles/33052/…
Hawkeye Parker
36

Microsoft® SQL Server ™ 2000 utiliza estas palabras clave SQL-92 para combinaciones externas especificadas en una cláusula FROM:

  • UNIÓN EXTERIOR IZQUIERDA o UNIÓN IZQUIERDA

  • UNIÓN EXTERIOR DERECHA o UNIÓN DERECHA

  • UNIÓN EXTERIOR COMPLETA o UNIÓN COMPLETA

De MSDN

Los full outer joino full joindevuelve todas las filas de ambas tablas, la adecuación de las filas siempre que sea un partido se pueden hacer y colocación NULLs en los lugares donde no existe una fila coincidente.

León
fuente
11

Es cierto que algunas bases de datos reconocen la palabra clave OUTER. Algunos no. Cuando se reconoce, suele ser una palabra clave opcional . Casi siempre, FULL JOIN y FULL OUTER JOIN hacen exactamente lo mismo. (No puedo pensar en un ejemplo en el que no lo hagan. ¿Alguien más puede pensar en uno?)

Esto puede hacer que se pregunte: "¿Por qué sería una palabra clave si no tiene significado?" La respuesta se reduce al estilo de programación.

En los viejos tiempos, los programadores se esforzaban por hacer su código lo más compacto posible. Cada carácter significó un mayor tiempo de procesamiento. Usamos variables de 1, 2 y 3 letras. Usamos años de 2 dígitos. Eliminamos todos los espacios en blanco innecesarios. Algunas personas todavía programan de esa manera. Ya no se trata del tiempo de procesamiento. Se trata más de codificación rápida.

Los programadores modernos están aprendiendo a usar variables más descriptivas y a incluir más comentarios y documentación en su código. El uso de palabras adicionales como OUTER asegúrese de que otras personas que lean el código tengan más facilidad para entenderlo. Habrá menos ambigüedad. Este estilo es mucho más legible y más amable para las personas en el futuro que tendrán que mantener ese código.

MarvinM
fuente