Tipos de JOIN en SQL: ¿cuáles son los principales?

Por Felipe

Publicado en:

En SQL, un JOIN sirve para combinar filas de dos o más tablas relacionadas a través de una columna en común, permitiéndote consultar datos dispersos como si estuvieran juntos. Los tipos principales de JOIN son INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN y SELF JOIN, y cada uno se comporta de una manera distinta.

¿Qué es un JOIN en SQL y para qué sirve?

Las bases de datos relacionales, como MySQL o MariaDB, guardan la información repartida en distintas tablas para evitar duplicados y mantener todo ordenado. Por ejemplo, una tabla puede contener los datos de tus clientes y otra los pedidos que han realizado. Un JOIN es la cláusula de SQL que permite relacionar esas tablas y traer, en una sola consulta, información combinada de ambas: el nombre del cliente junto al detalle de su pedido. Sin los JOIN tendrías que hacer múltiples consultas y unir los datos manualmente, algo lento y propenso a errores. Dominar los distintos tipos de JOIN es, por tanto, una habilidad esencial para cualquier persona que trabaje con bases de datos.

Funciones del JOIN en SQL

El JOIN cumple varias funciones clave dentro de la gestión de datos: combina información de varias tablas relacionadas, evita la redundancia al mantener los datos normalizados, permite generar reportes complejos y filtra resultados según las coincidencias entre tablas. La columna que conecta las tablas suele ser una clave: una clave primaria en una tabla y una clave foránea en la otra. Esa relación es la que el JOIN utiliza para saber qué filas corresponden entre sí y deben combinarse en el resultado.

Tipos de JOIN en SQL

Estos son los tipos de JOIN más importantes y la forma en que se comporta cada uno:

INNER JOIN

Es el más utilizado. Devuelve únicamente las filas que tienen coincidencia en ambas tablas. Si un cliente no tiene pedidos, no aparecerá en el resultado. Es ideal cuando solo te interesan los registros que están relacionados en las dos tablas, por ejemplo, los clientes que sí han realizado una compra.

LEFT JOIN

También llamado LEFT OUTER JOIN, devuelve todas las filas de la tabla de la izquierda y las coincidencias de la tabla de la derecha. Cuando no hay coincidencia, los campos de la derecha aparecen vacíos (NULL). Es perfecto para obtener, por ejemplo, todos los clientes —hayan comprado o no— mostrando sus pedidos solo cuando existan.

RIGHT JOIN

Es el espejo del anterior. El RIGHT OUTER JOIN devuelve todas las filas de la tabla de la derecha y las coincidencias de la izquierda, rellenando con NULL donde no haya correspondencia. Se usa con menos frecuencia que el LEFT JOIN, ya que casi siempre se puede reescribir invirtiendo el orden de las tablas.

FULL JOIN

El FULL JOIN o FULL OUTER JOIN combina lo mejor de los dos anteriores: devuelve todas las filas de ambas tablas, con coincidencias donde las haya y NULL donde no. Es útil cuando quieres ver absolutamente todos los registros de las dos tablas, estén relacionados o no. Conviene saber que MySQL no soporta el FULL JOIN de forma nativa, pero se puede simular combinando un LEFT JOIN y un RIGHT JOIN con UNION.

CROSS JOIN

El CROSS JOIN produce el producto cartesiano de las dos tablas: combina cada fila de la primera con cada fila de la segunda. Si una tabla tiene 10 filas y la otra 5, el resultado tendrá 50. No utiliza una condición de relación, por lo que debe usarse con cuidado, ya que con tablas grandes puede generar una cantidad enorme de resultados.

SELF JOIN

Un SELF JOIN no es un tipo nuevo, sino una técnica: consiste en unir una tabla consigo misma. Resulta muy útil para comparar filas dentro de la misma tabla, por ejemplo, para encontrar empleados que comparten el mismo jefe o para construir jerarquías. Se logra usando alias distintos para referirse dos veces a la misma tabla en la consulta.

Un ejemplo práctico para entenderlo mejor

Imagina dos tablas: “clientes”, con las columnas id_cliente y nombre, y “pedidos”, con las columnas id_pedido, id_cliente y monto. Para listar el nombre de cada cliente junto al monto de sus pedidos, escribirías una consulta que une ambas tablas a través de la columna id_cliente, que actúa como nexo entre ellas. Con un INNER JOIN obtendrías solo los clientes que tienen al menos un pedido registrado. Con un LEFT JOIN obtendrías a todos los clientes, incluyendo a quienes aún no han comprado, mostrando un valor NULL en la columna del monto. Este sencillo cambio de una sola palabra —INNER por LEFT— transforma por completo el resultado, y entender esa diferencia es lo que distingue una consulta correcta de una que deja datos fuera o muestra registros de más. Por eso, antes de escribir una consulta, conviene tener muy claro el resultado que esperas obtener.

Cómo elegir el JOIN correcto y por qué influye tu hosting

La clave para elegir el JOIN adecuado es preguntarte qué datos necesitas: ¿solo los registros relacionados? Usa INNER JOIN. ¿Todos los de una tabla aunque no tengan pareja? Usa LEFT o RIGHT JOIN. ¿Absolutamente todo? Recurre al FULL JOIN. Ahora bien, el rendimiento de estas consultas no depende solo de cómo las escribas, sino también de dónde se ejecuta tu base de datos. Un hosting con discos SSD o NVMe, suficiente memoria y tecnología LiteSpeed procesa las consultas con JOIN mucho más rápido, algo que se nota especialmente cuando manejas miles de registros. Si tu proyecto trabaja con bases de datos exigentes, te conviene un alojamiento de alto rendimiento como los planes de hosting de HostingPlus, que incluyen bases de datos MySQL, soporte 24/7 y migración gratuita.

Preguntas frecuentes

¿Cuál es el JOIN más usado en SQL?

El INNER JOIN es, con diferencia, el más utilizado, porque devuelve solo las filas que tienen coincidencia en ambas tablas, que es justo lo que se necesita en la mayoría de consultas del día a día.

¿MySQL admite todos los tipos de JOIN?

MySQL admite INNER, LEFT, RIGHT y CROSS JOIN de forma nativa. El FULL JOIN no está disponible directamente, pero se puede simular combinando un LEFT JOIN y un RIGHT JOIN mediante la cláusula UNION.

¿Los JOIN hacen más lentas mis consultas?

Bien diseñados y con índices adecuados en las columnas de relación, los JOIN son muy eficientes. El rendimiento mejora de forma notable cuando tu base de datos corre en un hosting rápido, con discos SSD o NVMe y buena memoria disponible.

¿Tu web necesita el hosting N°1 del Perú?

Hosting peruano con soporte real 24/7, migración gratis, SSL incluido y 30 días de garantía. Desde S/.70 al año.

Ver planes de hosting →