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命令从左表返回所有行,并从右表返回匹配的行。如果不匹配,则结果从右侧为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命令从右表返回所有行,并从左表返回匹配的记录。如果没有匹配项,则结果从左侧为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当左表或右表中存在匹配项时,该命令将返回所有行。
以下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”中没有匹配项,则这些行也将被列出。