SQL JOINS
SQL 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”。上面两个表之间的关系是“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
以下是SQL中不同类型的JOIN:
- (INNER)JOIN:返回两个表中具有匹配值的记录
- LEFT(OUTER)JOIN:返回左表中的所有记录,以及右表中的匹配记录
- RIGHT(OUTER)JOIN:返回右表中的所有记录,以及左表中匹配的记录
- FULL(OUTER)JOIN:当左表或右表中匹配时返回所有记录