FULL OUTER JOIN en SQL

La cláusula FULL OUTER JOIN en SQL devuelve todas las filas de ambas tablas : las que coinciden y las que no tienen pareja. Donde falta coincidencia, las columnas de la otra tabla son NULL .

FULL OUTER JOIN en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.

Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.

FULL OUTER JOIN en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.

Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.

Combina el comportamiento de LEFT JOIN y RIGHT JOIN en una sola consulta. El resultado puede ser grande si las tablas tienen muchas filas sin pareja.


Sintaxis FULL OUTER JOIN en SQL

La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.

Plantilla

    SELECT columna1, columna2, ...
FROM tabla_izquierda
FULL OUTER JOIN tabla_derecha
           ON tabla_izquierda.clave = tabla_derecha.clave;
  
Diagrama FULL OUTER JOIN: todas las filas de Tabla A y Tabla B, con o sin pareja
En un FULL OUTER JOIN entran coincidencias y filas huérfanas de las dos tablas.

Ejemplo FULL OUTER JOIN en SQL

Todos los clientes y todos los pedidos, estén o no emparejados:

Nombre de cliente e ID de pedido

    SELECT Clientes.Nombre_Cliente, Pedidos.ID_Pedido
FROM Clientes
FULL OUTER JOIN Pedidos ON Clientes.ID_Cliente = Pedidos.ID_Cliente
ORDER BY Clientes.Nombre_Cliente;
  
Abrir en editor

Resultado: diez filas — clientes sin pedido muestran NULL en ID_Pedido .

Nombre_ClienteID_Pedido
Ana García1
Carlos RuizNULL
Elena Torres3
… 7 filas más (10 en total)

Tablas demo para FULL OUTER JOIN

Tabla Pedidos (demo)

Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.

ID_Pedido ID_Cliente ID_Empleado Fecha
1112024-01-15
2322024-01-18
3512024-02-02
4232024-02-10
5642024-02-14
Tabla Pedidos en el editor SQL. Cinco pedidos enlazan clientes y empleados.
ID_Cliente Nombre_Cliente Ciudad Pais
1Ana GarcíaMadridEspaña
2Luis PérezBarcelonaEspaña
3María LópezValenciaEspaña
4Carlos RuizMadridEspaña
6John SmithLondonUK
… 5 clientes más en la demo (10 en total)
Tabla Clientes (extracto). Diez clientes; cinco tienen pedidos.

FULL OUTER JOIN con Empleados

Empleados con y sin pedidos asignados:

Empleado y pedido

    SELECT Empleados.Nombre, Empleados.Apellido, Pedidos.ID_Pedido
FROM Empleados
FULL OUTER JOIN Pedidos ON Empleados.ID_Empleado = Pedidos.ID_Empleado
ORDER BY Empleados.Nombre;
  
Abrir en editor

Resultado: Isabel Ruiz aparece con ID_Pedido NULL porque no tiene pedidos en la demo.

Tabla Empleados (demo)

Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.

ID_Empleado Nombre Apellido Ciudad
1LauraMartínMadrid
2PabloSánchezBarcelona
3CarmenLópezValencia
4DiegoFernándezSevilla
5IsabelRuizBilbao
Tabla Empleados. Isabel no tiene pedidos asignados en la demo.

Resumen FULL OUTER JOIN

  • FULL OUTER JOIN conserva filas de las dos tablas.
  • Sin coincidencia, las columnas de la otra tabla son NULL .
  • En SQLite de la demo está soportado; en otros motores antiguos puede simularse con UNION de LEFT y RIGHT JOIN .
  • Siguiente paso: SELF JOIN .

Cómo practicar en el editor

1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.