SQL 联接
SQL JOIN
JOIN SQL 用于根据两个或多个表之间的一个相关列合并两个或多个表中的行。
请看 "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 |
请注意,"Customers" 表中的 "CustomerID" 列指的是 "Customers" 表中的 "CustomerID"。上面两个表之间的关系是 "CustomerID" 列。
然后,我们可以创建以下 SQL 语句(包含 INNER JOIN),用于选择两个表中具有匹配值的记录:
实例
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
亲自试一试 »
将产生如下结果:
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 9/18/1996 |
10365 | Antonio Moreno Taquería | 11/27/1996 |
10383 | Around the Horn | 12/16/1996 |
10355 | Around the Horn | 11/15/1996 |
10278 | Berglunds snabbköp | 8/12/1996 |
不同类型的 SQL JOIN
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- (INNER) JOIN: 如果表中有至少一个匹配,则返回行
- LEFT (OUTER) JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT (OUTER) JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL (OUTER) JOIN: 只要其中一个表中存在匹配,就返回行