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) 中的所有记录,即使右侧没有匹配项 表(订单)。
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) 中的所有记录,即使左侧没有匹配项 表(订单)。
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
关键字返回左表(客户)中的所有行,以及右表中的所有行 表(订单)。 如果"客户"中有行与"订单"不匹配,或者"订单"中有行与"客户"不匹配,这些行也会被列出。