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”中沒有匹配項,則這些行也將被列出。