程序员社区

MySQL系列教程 --- 79、MySQL 中的 左连接和右连接

MySQL主要有两种连接,分别是LEFT JOIN和RIGHT JOIN。这些连接之间的主要区别是包含不匹配的行\。LEFT JOIN 包括左侧的所有记录和右侧表中匹配的行,而 RIGHT JOIN 返回右侧的所有行和左侧表中未匹配的行。在本节中,我们将了解 LEFT 和 RIGHT 连接之间的流行差异。在探讨比较之前,让我们先了解一下MySQL 中的JOIN、LEFT JOIN 和 RIGHT JOIN 子句。

什么是JOIN子句?

Jsoin 用于从多个表中查询数据,并通过从条件的两个或多个表返回组合的结果。join 子句中的条件指示列在指定表之间的匹配方式。

什么是 LEFT JOIN 子句?

在左连接子句右表中连接两个或多个表,并返回左表中的所有行和匹配的记录,或者返回null如果没有找到任何匹配的记录。它也被称为左外连接。因此,Outer 是与 Left Join 一起使用的可选关键字。

我们可以通过以下视觉表示来理解它:

file

什么是RIGHT JOIN 子句?

该右连接从句连接两个或多个表,然后从右侧表返回所有的行,只有从其他表到的符合规定的那些结果连接条件。如果从左侧表中找到不匹配的记录,则返回 Null 值。它也被称为右外连接。因此,Outer 是与 Right Join 一起使用的可选子句。

我们可以通过以下视觉表示来理解它。

file

LEFT JOIN 子句的语法

以下是 LEFT JOIN 的一般语法:

SELECT column_list  FROM table_name1   
LEFT JOIN table_name2   
ON column_name1 = column_name2  
WHERE join_condition  

以下是 LEFT OUTER JOIN 的一般语法:

SELECT column_list  FROM table_name1   
LEFT OUTER JOIN table_name2   
ON column_name1 = column_name2  
WHERE join_condition  

RIGHT JOIN 子句的语法

以下是 RIGHT JOIN 的一般语法:

SELECT column_list  FROM table_name1   
RIGHT JOIN table_name2   
ON column_name1 = column_name2  
WHERE join_condition  

以下是 RIGHT OUTER JOIN 的一般语法:

SELECT column_list  FROM table_name1   
RIGHT OUTER JOIN table_name2   
ON column_name1 = column_name2  
WHERE join_condition  

左连接与右连接

下面的比较表快速解释了它们的主要区别:

LEFT JOIN RIGHT JOIN
它连接两个或多个表,返回左表中的所有记录,并从右表中匹配行。 它用于连接两个或多个表,返回右侧表中的所有记录,以及左侧表中的匹配行。
如果右侧表中没有匹配的行,则结果集将包含空值。 如果左侧表中没有匹配的行,结果集将包含空值。
它也被称为左外连接。 它也称为右外连接。

例子

让我们通过示例了解两种连接之间的差异。假设我们有一个名为“ customer ”和“ orders ”的表,其中包含以下数据:

Table: customer

file

Table: orders

file

左连接示例

以下 SQL 语句使用 LEFT JOIN 查询从两个表中返回匹配的记录:

SELECT cust_id, cust_name, order_num, order_date  
FROM customer LEFT JOIN orders   
ON customer.cust_id = orders.order_id  
WHERE order_date < '2020-04-30';  

成功执行查询后,我们将得到如下输出:

file

右连接示例

以下 SQL 语句使用 RIGHT JOIN 查询从两个表中返回匹配的记录:

SELECT cust_id, cust_name, occupation, order_num, order_date    
FROM customer  
RIGHT JOIN orders ON cust_id = order_id    
ORDER BY order_date;  

成功执行查询后,我们将得到如下输出:

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 79、MySQL 中的 左连接和右连接

一个分享Java & Python知识的社区