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

SQL 关键字参考

INNER JOIN

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

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

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

注意:只要各列之间有匹配项,INNER JOIN关键字就会从两个表中选择所有行。如果“订单(Orders)”表中有与“客户(Customers)”中不匹配的记录,则这些订单将不会显示!

以下SQL语句选择所有包含客户和托运人信息的订单:

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

LEFT JOIN命令从左表返回所有行,并从右表返回匹配的行。如果不匹配,则结果从右侧为NULL。

以下SQL将选择所有客户以及他们可能拥有的任何订单:

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

注意:LEFT JOIN关键字返回左表(客户表 Customers)的所有记录,即使是在右表(订单表 Orders)不匹配。

RIGHT JOIN

RIGHT JOIN命令从右表返回所有行,并从左表返回匹配的记录。如果没有匹配项,则结果从左侧为NULL。

以下SQL将返回所有员工以及他们可能下的所有订单:

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

注意:RIGHT JOIN关键字返回右表(雇员 Employees)的所有记录,即使在左表(订单 Orders)不匹配。

FULL OUTER JOIN

FULL OUTER JOIN当左表或右表中存在匹配项时,该命令将返回所有行。

以下SQL语句选择所有客户和所有订单:

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

注意:FULL OUTER JOIN关键字返回所有行左表(客户 Customers),以及所有来自右表(订单 Orders)的行。如果“客户 Customers”中的某些行在“订单 Orders”中没有匹配项,或者在“订单 Orders”中的某些行在“客户 Customers”中没有匹配项,则这些行也将被列出。

SQL 关键字参考