Tutorial de SQL

Cómo usar LEFT JOIN en SQL

LEFT JOIN conserva todas las filas de la tabla de la izquierda, la que va en FROM, tengan pareja o no; cuando no la tienen, las columnas de la otra tabla salen vacías (NULL). Sirve para listar todos los alumnos o todos los clientes. Aquí verás la sintaxis, la diferencia con INNER JOIN y un ejemplo resuelto.

LEFT JOIN: conservar todas las filas de la izquierda

JOIN (INNER) solo deja las filas que tienen pareja en las dos tablas. A veces necesitas todas las filas de una tabla, tengan pareja o no: todos los alumnos, todos los clientes…

LEFT JOIN conserva todas las filas de la tabla de la izquierda (la que va en FROM). Cuando una fila no tiene pareja, las columnas de la otra tabla salen vacías (NULL).

Cómo se escribe

SELECT … FROM tabla_izquierda a LEFT JOIN tabla_derecha b ON b.a_id = a.id

FROM tabla_izquierda
de esta tabla salen TODAS las filas
LEFT JOIN tabla_derecha
trae sus datos solo si hay pareja; si no, NULL
ON
la condición de pareja, igual que en JOIN

Ejemplo resuelto

SELECT a.nombre, c.materia, c.calificacion FROM alumnos a LEFT JOIN calificaciones c ON c.alumno_id = a.id
Número de fila#nombremateriacalificacion
1Valeria NúñezEspañol9.2
2Valeria NúñezHistoria9.6
3Valeria NúñezMatemáticas9.5
4Emiliano RojasEspañol8.1
5Emiliano RojasHistoria7.9
6Emiliano RojasMatemáticas7.4
7Camila OrtegaEspañol8.3
8Camila OrtegaHistoria8.7
9Camila OrtegaMatemáticas8.8
10Santiago FloresEspañol7.3
11Santiago FloresMatemáticas6.5
12Regina SalinasEspañol9.7
13Regina SalinasHistoria9.8
14Regina SalinasMatemáticas10
15Diego CárdenasEspañol7.6
16Diego CárdenasHistoria7.1
17Diego CárdenasMatemáticas6.8
18Ximena PazEspañol7.9
19Ximena PazHistoria8.4
20Ximena PazMatemáticas8.2
21Sebastián LaraEspañol8.9
22Sebastián LaraHistoria9
23Sebastián LaraMatemáticas9.3
24Renata CamposNULLNULL
25Mateo GuzmánEspañol9.1
26Mateo GuzmánHistoria8.9
27Mateo GuzmánMatemáticas8.6

Todos los alumnos con sus calificaciones; Renata no tiene ninguna y aparece con materia y calificación vacías.

En SQL Server: En SQL Server es igual. También verás LEFT OUTER JOIN: OUTER es opcional y significa lo mismo.

  • El orden de las tablas importa: la que va en FROM es la que conserva todas sus filas.
  • Existe RIGHT JOIN (conserva la de la derecha), pero casi siempre se escribe LEFT JOIN cambiando el orden de las tablas: es más fácil de leer.

Preguntas frecuentes

¿Cuál es la diferencia entre INNER JOIN y LEFT JOIN?

INNER JOIN solo deja las filas con pareja en las dos tablas. LEFT JOIN conserva todas las de la izquierda y llena con NULL lo que no tiene pareja.

¿Importa el orden de las tablas en LEFT JOIN?

Sí: la tabla que va en FROM es la que conserva todas sus filas.

¿LEFT OUTER JOIN es lo mismo que LEFT JOIN?

Sí. OUTER es opcional y significa lo mismo, también en SQL Server.