📜  左联接和右联接之间的区别

📅  最后修改于: 2020-11-18 03:21:54             🧑  作者: Mango

左联接和右联接之间的区别

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

什么是JOIN子句?

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

什么是LEFT JOIN子句?

Left Join子句连接两个或多个表,并从左表返回所有行,并从右表返回匹配的记录;如果找不到任何匹配的记录,则返回null。也称为左外部联接。因此,Outer是与Left Join一起使用的可选关键字。

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

要阅读有关LEFT联接的更多信息,请单击此处。

什么是RIGHT JOIN条款?

Right Join子句联接两个或更多表,并返回右侧表的所有行,并且仅返回满足指定联接条件的另一个表的结果。如果从左侧表中找到不匹配的记录,则返回Null值。也称为“右外部连接”。因此,Outer是用于Right Join的可选子句。

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

要阅读有关RIGHT JOIN的更多信息,请单击此处。

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

左联接vs.右联接

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

LEFT JOIN RIGHT JOIN
It joins two or more tables, returns all records from the left table, and matching rows from the right-hand table. It is used to join two or more tables, returns all records from the right table, and matching rows from the left-hand table.
The result-set will contain null value if there is no matching row on the right side table. The result-set will contain null value if there is no matching row on the left side table.
It is also known as LEFT OUTER JOIN. It is also called as RIGHT OUTER JOIN.

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

表:客户

表:订单

左联接示例

以下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';

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

RIGHT JOIN示例

以下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;

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