轻松上手,快乐学习!

SQL JOIN 关键字


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 Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

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