Relaciones · unión externa

RIGHT JOIN

Conserva todas las filas de la tabla situada a la derecha y completa con NULL cuando falta una coincidencia a la izquierda.

Lectura: 5–7 minEjemplo comprobadoAlternativa portable
Contenido de esta guía

Qué conserva RIGHT JOIN

RIGHT JOIN devuelve todas las filas de la tabla escrita a la derecha. Cuando una de esas filas no encuentra pareja en la tabla izquierda, las columnas izquierdas reciben NULL.

Es la imagen inversa de LEFT JOIN. La misma pregunta suele poder escribirse intercambiando las tablas y usando LEFT JOIN, una forma que muchos equipos consideran más fácil de leer.

Sintaxis y equivalencia

RIGHT JOIN
SELECT columnas
FROM tabla_izquierda AS i
RIGHT JOIN tabla_derecha AS d
  ON i.clave = d.clave;
La misma conservación con LEFT JOIN
SELECT columnas
FROM tabla_derecha AS d
LEFT JOIN tabla_izquierda AS i
  ON i.clave = d.clave;

Ejemplo guiado

Los tres objetivos aparecen porque están a la derecha. Soporte no tiene avance y recibe NULL. El avance con identificador 4 desaparece porque no existe un objetivo derecho relacionado.

Resultado comprobado en SQLite 3.46
idnombreporcentaje
1Ventas80
2SoporteNULL
3Legal50
Conservar todos los objetivos
WITH objetivos(id, nombre) AS (
  VALUES (1, 'Ventas'), (2, 'Soporte'), (3, 'Legal')
), avance(objetivo_id, porcentaje) AS (
  VALUES (1, 80), (3, 50), (4, 20)
)
SELECT o.id, o.nombre, a.porcentaje
FROM avance AS a
RIGHT JOIN objetivos AS o
  ON a.objetivo_id = o.id
ORDER BY o.id;

Error frecuente

Perder de vista qué tabla se conserva

En consultas largas, leer de derecha a izquierda aumenta la carga mental. Si el equipo trabaja principalmente con LEFT JOIN, invierte las tablas y conserva una dirección de lectura uniforme.

El cambio no consiste en sustituir una palabra: también debes intercambiar el orden de las tablas y mantener la condición correcta.

Comprueba lo aprendido

Básica · reescritura

Convierte RIGHT JOIN en LEFT JOIN

Reescribe el ejemplo anterior con objetivos a la izquierda, sin cambiar el conjunto de filas.

Compatibilidad entre motores

PostgreSQL, MySQL y SQL Server admiten RIGHT JOIN. SQLite lo incorporó en la versión 3.39.0; instalaciones anteriores necesitan la reescritura equivalente con LEFT JOIN. Antes de publicar una consulta, comprueba la versión real del motor que la ejecutará.

Qué debes recordar

  • La tabla derecha conserva todas sus filas.
  • Las columnas izquierdas reciben NULL cuando no hay pareja.
  • Puede reescribirse intercambiando tablas y usando LEFT JOIN.
  • SQLite requiere la versión 3.39.0 o posterior para la sintaxis directa.

Conceptos relacionados

Fuentes técnicas consultadas