SQL 联接

创建于 2024-12-02 / 30
字体: [默认] [大] [更大]

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: 只要其中一个表中存在匹配,就返回行

SQL INNER JOIN  SQL LEFT JOIN  SQL RIGHT JOIN  SQL FULL OUTER JOIN


学习训练

练习题:

JOIN 子句中插入缺失的部分,以连接 Orders客户, 使用两个表中的 CustomerID 字段作为两个表之间的关系。

SELECT *
FROM Orders
LEFT JOIN Customers
=
;

开始练习



0 人点赞过