[MySQL] Consulta de combinación externa

Si 内连接consultamos los datos usando:

Cláusula de uso inner join - on: mostrar toda la información coincidente

select * 
from emp e
inner join dept d
on e.deptno = d.deptno;

inserte la descripción de la imagen aquí

inner join - onDesventajas de la cláusula:

  1. Si el número de departamento es 40, no se muestra información del empleado y no se mostrará en la consulta
  2. Un empleado no tiene información de número de departamento y no se mostrará en la consulta

Por lo tanto, si utiliza una conexión interna para consultar, a veces los datos que se muestran están incompletos . Si queremos mostrar información que no coincide en las dos tablas, podemos usar 外连接una consulta.

Las uniones externas incluyen:

  • Unión exterior izquierda :left outer join
  • Unión exterior derecha :right outer join

PD : en el proceso de uso,outerse puede omitir.

Con la combinación externa izquierda, la información de la tabla de la izquierda puede mostrar los datos aunque no coincidan;
con la combinación externa derecha, la información de la tabla de la derecha puede mostrar los datos aunque no coincidan.

Unión exterior completa :full outer join

Esta sintaxis mostrará todos los datos no coincidentes en las tablas izquierda y derecha , pero mysqlno se admite en , pero oraclesí se admite en .

select *
from emp e
full outer join dept d
on e.deptno = d.deptno;

Devuelve un error de sintaxis 1064:

1064 - Tiene un error en su sintaxis SQL; verifique el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'full external join dept d on
e.deptno = d.deptno' en la línea 3

unionSin embargo, esta lógica se puede implementar mediante la sintaxis y la palabra clave unionrepresenta la unión de las consultas de combinación externa izquierda y derecha.

1. El uso de fetch union deduplicaráunion automáticamente , por lo que la eficiencia es baja .

select *
from emp e
left outer join dept d
on e.deptno = d.deptno
union -- 并集-去重-效率低
select * 
from emp e
right outer join dept d
on e.deptno = d.deptno;

2. union allLa unión se usa sin deduplicación , por lo que la eficiencia es alta .

select *
from emp e
left outer join dept d
on e.deptno = d.deptno
union all -- 并集-不去重-效率高
select * 
from emp e
right outer join dept d
on e.deptno = d.deptno;

mysqlEl soporte para las operaciones de conjunto es débil, solo se admiten las operaciones de unión, las operaciones de intersección y diferencia no se admiten ( oraclese admite el medio).

Supongo que te gusta

Origin blog.csdn.net/hold_on_qlc/article/details/130460584
Recomendado
Clasificación