UNIÓN EXTERIOR COMPLETA vs UNIÓN COMPLETA


Simplemente jugando con consultas y ejemplos para obtener una mejor comprensión de las uniones. Estoy notando 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 sólo una terminología intercambiable?

Author: John Woo, 2012-07-30

4 answers

En realidad son lo mismo. LEFT OUTER JOIN es lo mismo que LEFT JOIN y RIGHT OUTER JOIN es lo mismo que RIGHT JOIN. Es una forma más informativa de comparar de INNER Join.

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

 70
Author: John Woo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-06 06:23:23

Microsoft ® SQL Server™ 2000 utiliza estas palabras clave SQL-92 para uniones externas especificado 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

El full outer join o full join devuelve todas las filas de ambas tablas, haciendo coincidir las filas donde se puede hacer una coincidencia y colocando NULLs en los lugares donde no existe ninguna fila coincidente.

 22
Author: Lion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-06 12:00:29

Es cierto que algunas bases de datos reconocen la palabra clave EXTERNA. 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 donde no lo hacen. ¿Alguien más puede pensar en uno?)

Esto puede dejarte preguntándote, "¿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 personaje significaba un mayor tiempo de procesamiento. Utilizamos variables de 1, 2 y 3 letras. Usamos 2 años de dígitos. Eliminamos todo el espacio en blanco innecesario. 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 poner más comentarios y documentación en su código. El uso de palabras adicionales como EXTERIOR asegurarse de que otras personas que leen el código será más fácil entenderlo. Habrá menos ambigüedad. Este estilo es mucho más legible y más amable con las personas en el futuro que tendrán que mantener ese código.

 7
Author: MarvinM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-03 22:31:45

Eliminar el on TableA.name = TableB.name verá el producto cartesiano.

 0
Author: satish kumar Parida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-15 11:57:16