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:返回两个表中的所有记录