0Pricing
Coding Interview Prep · Lección

Semántica de RIGHT y FULL OUTER JOIN

Sepa cuándo se necesita cada uno y cómo reescribir RIGHT como LEFT

Semántica de RIGHT y FULL OUTER JOIN es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

Más allá de LEFT JOIN

Una vez que comprende LEFT JOIN, los entrevistadores ponen a prueba su imagen especular y la unión de ambos: RIGHT JOIN y FULL OUTER JOIN.

  • RIGHT JOIN conserva todas las filas de la tabla derecha.
  • FULL OUTER JOIN conserva las filas sin coincidencia de ambas tablas.

Esta lección define cada uno con precisión y muestra el truco de reescritura que tanto gusta a los entrevistadores: cualquier RIGHT JOIN puede convertirse en un LEFT JOIN.

Definición de RIGHT JOIN

Un RIGHT JOIN (o RIGHT OUTER JOIN) conserva todas las filas de la tabla derecha, la que se escribe después de la palabra clave JOIN. Las filas derechas sin coincidencia aparecen con NULL en las columnas de la tabla izquierda.

Es el espejo exacto de LEFT JOIN. Mientras LEFT conserva la primera tabla nombrada, RIGHT conserva la segunda.

SELECT c.name, o.amount
FROM orders o
RIGHT JOIN customers c
  ON o.customer_id = c.id;
-- keeps ALL customers, even those
-- with no order (Carol -> amount NULL)

Las tablas, de nuevo

Los mismos datos de antes. Carol (cliente 3) no tiene ningún pedido. Aquí todas las filas de orders hacen referencia a un cliente existente, así que, cuando customers es el lado conservado, ningún pedido queda huérfano.

-- customers           orders
-- 1 | Alice           10 | 1 | 50
-- 2 | Bob             11 | 1 | 75
-- 3 | Carol           12 | 2 | 20

Reescribir RIGHT como LEFT

El punto clave para la entrevista: RIGHT JOIN se usa rara vez en la práctica porque siempre puede invertir el orden de las tablas y usar LEFT JOIN. Las dos consultas siguientes son lógicamente idénticas.

Muchas guías de estilo prohíben RIGHT JOIN por completo, porque leer de izquierda a derecha y conservar siempre la tabla izquierda facilita el razonamiento.

-- RIGHT JOIN
SELECT c.name, o.amount
FROM orders o
RIGHT JOIN customers c ON o.customer_id = c.id;

-- Equivalent LEFT JOIN (preferred)
SELECT c.name, o.amount
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;

Definición de FULL OUTER JOIN

Un FULL OUTER JOIN conserva las filas sin coincidencia de ambas tablas. Piense en él como una combinación de LEFT JOIN y RIGHT JOIN:

  • Los pares coincidentes aparecen normalmente.
  • Filas izquierdas sin coincidencia: columnas derechas NULL.
  • Filas derechas sin coincidencia: columnas izquierdas NULL.

Responde a la petición "muéstreme todo de ambos lados, alineando las coincidencias".

SELECT c.name, o.id AS order_id
FROM customers c
FULL OUTER JOIN orders o
  ON o.customer_id = c.id;

Cuándo destaca FULL OUTER

FULL OUTER JOIN es la opción habitual para la conciliación: comparar dos conjuntos de datos que deberían coincidir, pero quizá no lo hagan.

Imagine una tabla orders y una tabla payments independiente. Un FULL OUTER JOIN sobre el id del pedido muestra en un solo resultado los pedidos sin pago y los pagos sin pedido coincidente; cada uno queda marcado por NULL en el lado que falta.

SELECT o.id AS order_id, p.id AS payment_id
FROM orders o
FULL OUTER JOIN payments p
  ON p.order_id = o.id
WHERE o.id IS NULL OR p.id IS NULL;
-- rows where one side is missing

Conocimiento de dialectos

Un entrevistador puede evaluar sus conocimientos sobre portabilidad. MySQL no tiene la palabra clave FULL OUTER JOIN (hasta la versión 8). Postgres, SQL Server y Oracle sí la admiten.

En MySQL se emula combinando un LEFT JOIN y un RIGHT JOIN con UNION (que elimina las filas coincidentes duplicadas). Conocer esta diferencia demuestra experiencia práctica.

-- FULL OUTER JOIN emulated in MySQL
SELECT c.name, o.id FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
UNION
SELECT c.name, o.id FROM customers c
RIGHT JOIN orders o ON o.customer_id = c.id;

Los cuatro tipos de JOIN, de un vistazo

Tenga presente esta tabla. «Preservada» significa que las filas sin coincidencia se conservan con NULL.

  • INNER JOIN: solo las filas coincidentes. No se conserva ninguna.
  • LEFT JOIN: se conservan todas las filas de la izquierda.
  • RIGHT JOIN: se conservan todas las filas de la derecha.
  • FULL OUTER JOIN: se conservan ambos lados.

Toda pregunta de entrevista sobre joins externos se reduce a elegir qué lado o lados conservar.

Cómo elegir entre ellos

Elija el JOIN preguntándose «¿qué filas sin coincidencia debo conservar?»

  • Conservar solo las filas de la tabla principal: LEFT JOIN (coloque primero la tabla principal).
  • Necesitar ambos conjuntos de filas sin coincidencia para conciliarlos: FULL OUTER JOIN.
  • Si solo importan las coincidencias: INNER JOIN.

Casi nunca se elige RIGHT JOIN de forma activa; se reformula como LEFT JOIN.

Un ejemplo de conciliación

Use FULL OUTER JOIN para etiquetar el estado de cada fila. Aplicar CASE al patrón de NULL le indica qué lado falta; es la consulta clásica de auditoría.

SELECT
  COALESCE(o.id, p.order_id) AS ord,
  CASE
    WHEN p.id IS NULL THEN 'no payment'
    WHEN o.id IS NULL THEN 'orphan payment'
    ELSE 'matched'
  END AS status
FROM orders o
FULL OUTER JOIN payments p ON p.order_id = o.id;

Idea equivocada habitual

Los candidatos suelen pensar que FULL OUTER JOIN devuelve el producto cartesiano de las filas sin coincidencia. No es así. Las filas sin coincidencia de cada lado aparecen exactamente una vez, emparejadas con NULL, y nunca se multiplican entre sí.

Las filas coincidentes siguen la multiplicación normal de los joins (una fila de salida por cada par coincidente), la misma regla de expansión que en cualquier join.

Comprobación rápida

Un entrevistador le pide reescribir una consulta para un equipo que prohíbe RIGHT JOIN.

Resumen

RIGHT JOIN conserva la tabla derecha; FULL OUTER JOIN conserva ambas. Cualquier RIGHT JOIN puede reescribirse como LEFT JOIN intercambiando el orden de las tablas, por eso los equipos prefieren LEFT.

  • FULL OUTER es ideal para conciliar dos conjuntos de datos.
  • MySQL no tiene FULL OUTER; emúlelo con LEFT + RIGHT + UNION.
  • Elija un JOIN decidiendo qué filas sin coincidencia desea conservar.
  • Las filas sin coincidencia aparecen una vez con NULL, nunca como un producto cartesiano.

Preguntas frecuentes

¿La lección «Semántica de RIGHT y FULL OUTER JOIN» es gratis?

Sí — el texto completo de «Semántica de RIGHT y FULL OUTER JOIN» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Semántica de RIGHT y FULL OUTER JOIN»?

Sepa cuándo se necesita cada uno y cómo reescribir RIGHT como LEFT Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Semántica de RIGHT y FULL OUTER JOIN»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. LEFT JOIN y conservación de filas sin coincidencia
  2. Semántica de RIGHT y FULL OUTER JOIN
  3. Encontrar filas sin coincidencia (anti-join)
  4. La trampa de WHERE en un outer join
← Volver a Coding Interview Prep