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