MySQL Right Join右连接

Right Join 用于连接两个或多个表并返回右侧表中的所有行,并且仅返回满足连接条件的另一个表中的那些结果。如果它从左侧表中找到不匹配的记录,则返回 Null 值。它类似于左连接,只是它给出了连接表的相反结果。它也称为右外连接。因此,Outer 是与 Right Join 一起使用的可选子句。

我们可以通过以下可视化表示来理解它,其中 Right Outer Join 返回左侧表中的所有记录,仅返回另一表中的匹配记录:

一、MySQL右连接 语法

以下是连接表Table1和Table2的 Right Join 的语法:

SELECT column_list  
FROM Table1  
RIGHT [OUTER] JOIN Table2   
ON join_condition;  

注意:在右连接中,如果表包含相同的列名,则 ON 和 USING 子句给出等效的结果。

让我们看看 Right Join 是如何工作的。

此联接开始从右侧表中选择列,并从左侧表中匹配该表的每条记录。如果两条记录都满足给定的连接条件,它会将所有列组合到一个新的行集中,该行集中将作为输出返回。如果右侧表的行没有从左侧表中找到任何匹配的行,则它将右侧表中的这些行与 Null 值组合在一起。这意味着,右连接返回来自右侧表天气的所有数据,它是否与左表中的行匹配。

二、MySQL右连接 示例

用于连接两个表的 RIGHT JOIN 子句

在这里,我们将创建两个表“ customers”和“ orders”,其中包含以下数据:

customers表:

orders表:

要使用 RIGHT JOIN 从两个表中选择记录,请执行以下查询:

SELECT customers.customer_id, cust_name, price, date  
FROM customers  
RIGHT JOIN orders ON customers.customer_id = orders.customer_id  
ORDER BY  customer_id;  

或者

SELECT customers.customer_id, cust_name, price, date  
FROM customers  
RIGHT JOIN orders USING(customer_id)  
ORDER BY  customer_id;  

成功执行上述查询后,它将给出以下的输出:

使用 WHERE 子句的 RIGHT JOIN

MySQL使用WHERE 子句提供表格中的过滤结果。以下示例使用 Right Join 子句说明了这一点:

SELECT * FROM customers  
RIGHT JOIN orders USING(customer_id)  
WHERE price>2500 AND price<5000;  

该语句给出以下结果:

MySQL RIGHT JOIN 多个表

我们已经创建了两个表,名为“ customers”和“ orders”。让我们再创建一个表并将其命名为“联contracts”,其中包含以下数据:

执行如下语句,将customers、orders、contacts这三张表连接起来:

SELECT customers.customer_id, cust_name, order_id, price, cellphone  
FROM customers  
RIGHT JOIN contacts ON customer_id = contact_id  
RIGHT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY order_id;  

成功执行上述查询后,将给出以下输出:

三、使用 RIGHT JOIN 子句获取不匹配的记录

当我们想要从另一个表中获取不包含任何匹配数据行的表中的记录时,Right Join 子句也很有用。

我们可以通过以下示例来理解它,该示例使用 RIGHT JOIN 子句查找没有手机号码的客户:

SELECT customer_id, cust_name, cellphone, homephone  
FROM customers  
RIGHT JOIN contacts ON customer_id = contact_id  
WHERE cellphone IS NULL  
ORDER BY cellphone;  

上面的语句返回以下输出:

热门文章

优秀文章