目录

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关键字返回左表(客户)中的所有记录,即使右表(订单)中没有匹配项。


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关键字返回右表(员工)中的所有记录,即使左表(订单)中没有匹配项。


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" 中不匹配,或者 "Orders" 中的某些行与 "Customers" 中不匹配,则将列出这些行以及。