INNER JOIN命令返回兩個(gè)表中具有匹配值的行。
以下SQL選擇帶有客戶信息的所有訂單:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
注意:只要各列之間有匹配項(xiàng),INNER JOIN關(guān)鍵字就會(huì)從兩個(gè)表中選擇所有行。如果“訂單(Orders)”表中有與“客戶(Customers)”中不匹配的記錄,則這些訂單將不會(huì)顯示!
以下SQL語句選擇所有包含客戶和托運(yùn)人信息的訂單:
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命令從左表返回所有行,并從右表返回匹配的行。如果不匹配,則結(jié)果從右側(cè)為NULL。
以下SQL將選擇所有客戶以及他們可能擁有的任何訂單:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY Customers.CustomerName;
注意:LEFT JOIN關(guān)鍵字返回左表(客戶表 Customers)的所有記錄,即使是在右表(訂單表 Orders)不匹配。
RIGHT JOIN命令從右表返回所有行,并從左表返回匹配的記錄。如果沒有匹配項(xiàng),則結(jié)果從左側(cè)為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關(guān)鍵字返回右表(雇員 Employees)的所有記錄,即使在左表(訂單 Orders)不匹配。
FULL OUTER JOIN當(dāng)左表或右表中存在匹配項(xiàng)時(shí),該命令將返回所有行。
以下SQL語句選擇所有客戶和所有訂單:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName;
注意:FULL OUTER JOIN關(guān)鍵字返回所有行左表(客戶 Customers),以及所有來自右表(訂單 Orders)的行。如果“客戶 Customers”中的某些行在“訂單 Orders”中沒有匹配項(xiàng),或者在“訂單 Orders”中的某些行在“客戶 Customers”中沒有匹配項(xiàng),則這些行也將被列出。