MySQL JOIN 两个 SELECT

在 MySQL 中,可以使用 JOIN 操作符将两个 SELECT 语句的结果集合并在一起。JOIN 是一种在关系型数据库中用于连接两个或多个表的操作。

什么是 JOIN

在数据库中,通常会有多个表用于存储数据。当需要从这些表中检索数据时,可能需要将它们连接在一起,以便获取所需的信息。

JOIN 是一种在关系型数据库中用于连接两个或多个表的操作。通过 JOIN 操作,可以根据表之间的关联关系通过共享的列将数据连接在一起。

JOIN 操作通常用于查询多个表的数据,以获取更复杂的结果。它可以根据需要连接不同类型的 JOIN,如 INNER JOIN、LEFT JOIN、RIGHT JOIN 等。

JOIN 操作示例

为了演示 JOIN 操作,我们将使用两个示例表:customersorders

customers 表

customer_id customer_name contact_name country
1 Alfreds Maria Germany
2 Ana Trujillo Ana Mexico
3 Antonio Moreno Antonio Mexico
4 Around the Horn Thomas UK
5 Berglunds Christina Sweden

orders 表

order_id customer_id order_date
1 3 2021-01-01
2 2 2021-02-01
3 4 2021-03-01
4 1 2021-04-01
5 5 2021-05-01

我们的目标是获取每个订单的详细信息,包括订单号、客户名称和订单日期。

INNER JOIN

INNER JOIN 是最常见的 JOIN 类型,它返回两个表中匹配的行。

以下是使用 INNER JOIN 连接 customersorders 表的示例代码:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

上述代码中的 ON 子句指定了连接条件,即根据 orderscustomers 表中的 customer_id 列进行连接。

LEFT JOIN

LEFT JOIN 返回左表中的所有行,并包括与右表匹配的行。

以下是使用 LEFT JOIN 连接 customersorders 表的示例代码:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

在上面的代码中,customers 表是左表,orders 表是右表。LEFT JOIN 返回了 customers 表中的所有行,以及与之关联的 orders 表中的行。

RIGHT JOIN

RIGHT JOIN 返回右表中的所有行,并包括与左表匹配的行。

以下是使用 RIGHT JOIN 连接 customersorders 表的示例代码:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

在上述代码中,customers 表是左表,orders 表是右表。RIGHT JOIN 返回了 orders 表中的所有行,以及与之关联的 customers 表中的行。

FULL JOIN

FULL JOIN 返回左右表中的所有行,即使没有匹配的行。

以下是使用 FULL JOIN 连接 customersorders 表的示例代码:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM customers
FULL JOIN orders ON customers.customer_id = orders.customer_id;

FULL JOIN 返回了 customers 表和 orders 表中的所有行,无论它们是否匹配。

关系图

下面是 customersorders 表之间关系的关系图:

erDiagram
    customers ||..o{ orders : has

总结

通过使用 JOIN 操作符,我们可以将两个 SELECT 语句的结果集合并在一起,并根据表之间的关联关系获取更复杂的结果。

在本文中,我们介绍了 INNER JOIN、LEFT