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" 中没有匹配项,那么这些行也将被列出。