sql >> Base de Datos >  >> RDS >> Mysql

sql se une como diagrama de venn

Estoy de acuerdo con Cade sobre las limitaciones de los diagramas de Venn aquí. Una representación visual más apropiada podría ser esta.

Mesas

SELECCIONE A.Color, B.Color DE UNA CRUZ ÚNASE A B SQL Fiddle

La combinación cruzada (o producto cartesiano) produce un resultado con cada combinación de las filas de las dos tablas. Cada tabla tiene 4 filas, por lo que esto produce 16 filas en el resultado.

SELECCIONA A.Color, B.Color DESDE UN INTERIOR ÚNETE B EN A.Color =B.Color Violín SQL

La combinación interna devuelve lógicamente todas las filas de la combinación cruzada que coinciden con la condición de combinación. En este caso cinco lo hacen.

SELECCIONE A.Color, B.Color DESDE UN INTERIOR ÚNASE B EN A.Color NO EN ('Verde','Azul') Violín SQL

La condición de unión interna no tiene por qué ser necesariamente una condición de igualdad y no necesita hacer referencia a columnas de ambas (o incluso de ninguna) de las tablas. Evaluación de A.Colour NOT IN ('Green','Blue') en cada fila de los retornos de unión cruzada.

Una condición de unión interna de 1=1 se evaluaría como verdadero para cada fila en la combinación cruzada, por lo que los dos son equivalentes (SQL Fiddle ).

SELECCIONE A.Color, B.Color DESDE UN EXTERIOR IZQUIERDO ÚNASE B EN A.Color =B.Color Violín SQL

Las combinaciones externas se evalúan lógicamente de la misma manera que las combinaciones internas, excepto que si una fila de la tabla de la izquierda (para una combinación de la izquierda) no se une con ninguna fila de la tabla de la derecha, se conserva en el resultado con NULL valores para las columnas de la derecha.

SELECCIONE A.Color, B.Color DESDE UN EXTERIOR IZQUIERDO ÚNASE B EN A.Color =B.Color DONDE B.Color ES NULO Violín SQL

Esto simplemente restringe el resultado anterior para devolver solo las filas donde B.Colour IS NULL . En este caso particular, estas serán las filas que se conservaron porque no coincidían en la tabla de la derecha y la consulta devuelve la única fila roja que no coincide en la tabla B . Esto se conoce como unión anti semi.

Es importante seleccionar una columna para IS NULL prueba que no admite valores NULL o para la cual la condición de unión garantiza que cualquier NULL los valores se excluirán para que este patrón funcione correctamente y evitar simplemente recuperar filas que tengan un NULL valor para esa columna además de las filas no coincidentes.

SELECCIONA A.Color, B.Color DESDE UNA UNIÓN EXTERNA DERECHA B EN A.Color =B.Color Violín SQL

Las combinaciones externas derechas actúan de manera similar a las combinaciones externas izquierdas, excepto que conservan las filas que no coinciden de la tabla derecha y anulan las columnas de la izquierda.

SELECCIONE A.Color, B.Color DE UNA UNIÓN EXTERNA COMPLETA B EN A.Color =B.Color Violín SQL

Las combinaciones externas completas combinan el comportamiento de las combinaciones izquierda y derecha y preservan las filas que no coinciden de las tablas izquierda y derecha.