📅  最后修改于: 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子句中的条件指示如何在指定的表之间匹配列。
Left Join子句连接两个或多个表,并从左表返回所有行,并从右表返回匹配的记录;如果找不到任何匹配的记录,则返回null。也称为左外部联接。因此,Outer是与Left Join一起使用的可选关键字。
我们可以通过以下视觉表示理解它:
要阅读有关LEFT联接的更多信息,请单击此处。
Right Join子句联接两个或更多表,并返回右侧表的所有行,并且仅返回满足指定联接条件的另一个表的结果。如果从左侧表中找到不匹配的记录,则返回Null值。也称为“右外部连接”。因此,Outer是用于Right Join的可选子句。
我们可以通过以下视觉表示理解它。
要阅读有关RIGHT 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的常规语法:
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 |
---|---|
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;
成功执行查询后,我们将获得如下输出: