MySQL 连接(Joins)

MySQL 连接表格(Joining Tables)

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

MySQL 支持的连接类型

  • INNER JOIN:返回两个表中具有匹配值的记录
  • LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录
  • RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录
  • CROSS JOIN:返回两个表中的所有记录
INNER JOIN LEFT JOIN RIGHT JOIN CROSS JOIN