SQL RIGHT JOINPalabras clave
RIGHT JOIN es una palabra clave de unión en SQL, utilizada para extraer datos de múltiples tablas.
Similar a LEFT JOIN, pero su comportamiento es opuesto: RIGHT JOIN devuelve todos los registros de la tabla derecha, incluso si no hay registros coincidentes en la tabla izquierda.
La palabra clave RIGHT JOIN devuelve todas las filas de la tabla derecha (table2), incluso si no hay coincidencia en la tabla izquierda (table1). Si no hay coincidencia en la tabla izquierda, el resultado es NULL.
Sintaxis de SQL RIGHT JOIN
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
o:
SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;
Nota:En algunas bases de datos, RIGHT JOIN se denomina RIGHT OUTER JOIN.
- table1: tabla izquierda.
- table2: tabla derecha,
RIGHT JOINconservará todos los registros de esta tabla. - ON table1.column_name=table2.column_name: especifica la condición de unión, generalmente el campo común de las dos tablas.

Características
- Conserva todos los registros de la tabla derecha: incluso si no hay registros coincidentes en la tabla izquierda, se incluirán todos los registros de la tabla derecha en el resultado.
- Relleno cuando no hay coincidencia en la tabla izquierda
NULL: si no hay un registro correspondiente en la tabla izquierda, se usaNULLpara rellenar las columnas de la tabla izquierda.
Supongamos que hay dos tablas:EmployeesyDepartments。
Tabla Employees:
| EmployeeID | Name | DepartmentID |
|---|---|---|
| 1 | Alice | 10 |
| 2 | Bob | 20 |
| 3 | Charlie | NULL |
Tabla Departments:
| DepartmentID | DepartmentName |
|---|---|
| 10 | HR |
| 20 | IT |
| 30 | Finance |
Consulta usando RIGHT JOIN
SELECT Employees.Name, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
Resultado de la consulta:
| Name | DepartmentName |
|---|---|
| Alice | HR |
| Bob | IT |
| NULL | Finance |
Explicación:RIGHT JOINDevolvióDepartmentstodos los registros de la tabla. ParaDepartmentID = 30de los registros, debido a queEmployeesno hay datos coincidentes en la tabla, suNamecolumna esNULL。
yLEFT JOINDiferencias
LEFT JOIN: devuelve todos los registros de la tabla izquierda, incluso si la tabla derecha no tiene coincidencias.RIGHT JOIN: devuelve todos los registros de la tabla derecha, incluso si la tabla izquierda no tiene coincidencias.
Base de datos de demostración
En este tutorial, usaremos la base de datos de muestra EJEMPLO.
Antes de operar, agregue un registro a la tabla access_log; este registro no tiene datos correspondientes en la tabla Websites:
INSERT INTO `access_log` (`aid`, `site_id`, `count`, `date`) VALUES ('10', '6', '111', '2016-03-09');
A continuación se muestran los datos seleccionados de la tabla "Websites":
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Ejemplo | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
A continuación se muestran los datos de la tabla de registros de acceso al sitio web "access_log":
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | | 10 | 6 | 111 | 2016-03-19 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Ejemplo de SQL RIGHT JOIN
La siguiente instrucción SQL devolverá los registros de acceso al sitio web.
En el siguiente ejemplo, tomamos Websites como tabla izquierda y access_log como tabla derecha:
Ejemplo
La ejecución del SQL anterior produce el siguiente resultado:
Nota:La palabra clave RIGHT JOIN devuelve todas las filas de la tabla derecha (access_log), incluso si no hay coincidencia en la tabla izquierda (Websites).
Otras extensiones