SQL JOIN
SQL JOIN 子句
JOIN 子句用于根据两个或多个表之间的关联列,将它们中的行组合在一起。
以下是 SQL 中不同类型的 JOIN:
(INNER) JOIN:仅返回在两个表中具有匹配值的行LEFT (OUTER) JOIN:返回左表中的所有行,以及右表中匹配的行RIGHT (OUTER) JOIN:返回右表中的所有行,以及左表中匹配的行(如果没有匹配,则结果为 NULL)FULL (OUTER) JOIN:返回左表或右表中有匹配的所有行
查看 "Orders" 表中的一条订单:
| OrderID | CustomerID | OrderDate |
|---|---|---|
| 10308 | 2 | 1996-09-18 |
然后,查看 "Customers" 表中的一位客户:
| CustomerID | CustomerName | ContactName | Country |
|---|---|---|---|
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | 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 | 1996-09-18 |
| 10365 | Antonio Moreno Taquería | 1996-11-27 |
| 10383 | Around the Horn | 1996-11-15 |
| 10355 | Around the Horn | 1996-12-16 |
| 10278 | Berglunds snabbköp | 1996-12-16 |