LEFT JOIN是MySQL中的一种表连接操作,用于将左表中的所有行与右表中的匹配行进行连接,并返回匹配的结果集。如果右表中没有匹配的行,则返回NULL值。
以下是一个案例,假设有两个表:orders和customers,分别存储订单信息和客户信息。表结构与之前的案例相同。
现在我们想要查询订单表中的订单号和对应的客户名字,包括没有匹配的订单。可以使用LEFT JOIN来实现。SQL语句如下:
SELECT orders.order_no, customers.name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.id;
复制代码
解释SQL语句:
- SELECT orders.order_no, customers.name:选择要查询的列,即订单号和客户名字。
- FROM orders:指定要查询的主表为orders表。
- LEFT JOIN customers:指定要连接的表为customers表,并使用LEFT JOIN进行连接操作。
- ON orders.customer_id = customers.id:指定连接条件,即orders表的customer_id列与customers表的id列进行匹配。
- 最终返回匹配的结果集,包含订单号和对应的客户名字。如果没有匹配的行,则客户名字列的值为NULL。
执行以上SQL语句后,将返回以下结果:
+---------+---------+
| order_no| name |
+---------+---------+
| 1001 | Alice |
| 1002 | Bob |
| 1003 | Alice |
+---------+---------+
复制代码
结果集中的每一行表示一个订单和对应的客户名字。如果订单没有对应的客户信息,则客户名字列的值为NULL。
RIGHT JOIN
RIGHT JOIN是MySQL中的一种表连接操作,用于将右表中的所有行与左表中的匹配行进行连接,并返回匹配的结果集。如果左表中没有匹配的行,则返回NULL值。
以下是一个案例,假设有两个表:orders和customers,分别存储订单信息和客户信息。表结构与之前的案例相同。
现在我们想要查询客户表中的客户名字和对应的订单号,包括没有匹配的客户。可以使用RIGHT JOIN来实现。SQL语句如下:
SELECT orders.order_no, customers.name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;
复制代码
解释SQL语句:
- SELECT orders.order_no, customers.name:选择要查询的列,即订单号和客户名字。
- FROM orders:指定要查询的主表为orders表。
- RIGHT JOIN customers:指定要连接的表为customers表,并使用RIGHT JOIN进行连接操作。
- ON orders.customer_id = customers.id:指定连接条件,即orders表的customer_id列与customers表的id列进行匹配。
- 最终返回匹配的结果集,包含客户名字和对应的订单号。如果没有匹配的行,则订单号列的值为NULL。
执行以上SQL语句后,将返回以下结果:
+---------+---------+
| order_no| name |
+---------+---------+
| 1001 | Alice |
| 1002 | Bob |
| 1003 | Alice |
+---------+---------+
复制代码
结果集中的每一行表示一个客户和对应的订单号。如果客户没有对应的订单信息,则订单号列的值为NULL。
FULL JOIN
FULL JOIN是MySQL中的一种表连接操作,用于将左表和右表中的所有行进行连接,并返回匹配的结果集。如果左表或右表中没有匹配的行,则返回NULL值。
以下是一个案例,假设有两个表:orders和customers,分别存储订单信息和客户信息。表结构与之前的案例相同。
现在我们想要查询所有的订单和客户信息,包括没有匹配的行。可以使用FULL JOIN来实现。SQL语句如下:
SELECT orders.order_no, customers.name
FROM orders
FULL JOIN customers ON orders.customer_id = customers.id;
复制代码
解释SQL语句:
- SELECT orders.order_no, customers.name:选择要查询的列,即订单号和客户名字。
- FROM orders:指定要查询的主表为orders表。
- FULL JOIN customers:指定要连接的表为customers表,并使用FULL JOIN进行连接操作。
- ON orders.customer_id = customers.id:指定连接条件,即orders表的customer_id列与customers表的id列进行匹配。
- 最终返回匹配的结果集,包含订单号和对应的客户名字。如果没有匹配的行,则订单号或客户名字列的值为NULL。
执行以上SQL语句后,将返回以下结果: