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" 表中沒有匹配的行,這些行也會被列出。