English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL JOIN 关键字使用方法及示例

Referencia de palabras clave SQL

INNER JOIN

INNER JOIN命令返回两个表中具有匹配值的行。

以下SQL选择带有客户信息的所有订单:

SELECT Orders.OrderID, Customers.CustomerName FROM Orders
UNION JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Nota:Si hay coincidencias entre las columnas, la palabra clave INNER JOIN seleccionará todas las filas de ambas tablas. Si hay registros que no coinciden en la tabla 'Órdenes (Orders)' con la tabla 'Clientes (Customers)', estas órdenes no se mostrarán!

La siguiente sentencia SQL selecciona todas las órdenes que contienen información de clientes y transportistas:

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

LEFT JOIN

La orden LEFT JOIN devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Si no hay coincidencias, los resultados desde el lado derecho son NULL.

La siguiente consulta SQL seleccionará todos los clientes y cualquier orden que puedan tener:

 SELECT Customers.CustomerName, Orders.OrderID 
 FROM Customers
 LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
 ORDER BY Customers.CustomerName;

Nota:La palabra clave LEFT JOIN devuelve todas las filas de la tabla izquierda (tabla de clientes Customers), incluso si no hay coincidencias en la tabla derecha (tabla de órdenes Orders).

RIGHT JOIN

La orden RIGHT JOIN devuelve todas las filas de la tabla derecha y las coincidencias de los registros de la tabla izquierda. Si no hay coincidencias, los resultados desde el lado izquierdo son NULL.

La siguiente consulta SQL devolverá todos los empleados y todas las órdenes que podrían haber realizado:

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

Nota:La palabra clave RIGHT JOIN devuelve todos los registros de la tabla derecha (Empleados Employees), incluso si no hay coincidencias en la tabla izquierda (Órdenes Orders).

FULL OUTER JOIN

FULL OUTER JOIN devuelve todas las filas cuando hay coincidencias en la tabla izquierda o derecha.

La siguiente sentencia SQL selecciona todos los clientes y todas las órdenes:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN  
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Nota:El keyword FULL OUTER JOIN devuelve todas las filas de la tabla izquierda (Clientes), así como todas las filas provenientes de la tabla derecha (Órdenes). Si algunas filas de 'Clientes' no tienen coincidencia en 'Órdenes', o si algunas filas de 'Órdenes' no tienen coincidencia en 'Clientes', también se listarán estas filas.

Referencia de palabras clave SQL