SQL 連接(Joins)
SQL join 用于把來自兩個或多個表的行結合起來。
SQL JOIN
SQL JOIN 子句用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。
最常見的 JOIN 類型:SQL INNER JOIN(簡單的 JOIN)。 SQL INNER JOIN 從多個表中返回滿足 JOIN 條件的所有行。
讓我們看看選自 "Orders" 表的數據:
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
然后,看看選自 "Customers" 表的數據:
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
請注意,"Orders" 表中的 "CustomerID" 列指向 "Customers" 表中的客戶。上面這兩個表是通過 "CustomerID" 列聯系起來的。
然后,如果我們運行下面的 SQL 語句(包含 INNER JOIN):
實例
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
運行結果如下所示:
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 1996-09-18 |
不同的 SQL JOIN
在我們繼續講解實例之前,我們先列出您可以使用的不同的 SQL JOIN 類型:
- INNER JOIN:如果表中有至少一個匹配,則返回行
- LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
- RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
- FULL JOIN:只要其中一個表中存在匹配,則返回行