MySQL RIGHT JOIN

2025年3月17日 | 阅读 3 分钟

Right Join 用于连接两个或多个表,并返回右表的所有行,以及左表中满足连接条件的匹配行。如果左表有不匹配的记录,则返回 Null 值。它与 Left Join 类似,只是连接表的顺序相反。它也称为 Right Outer Join。因此,Outer 是 Right Join 的可选子句。

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

MySQL Right Join

RIGHT JOIN 语法

以下是连接表 Table1Table2 的 Right Join 语法:

注意:在 Right Join 中,如果表包含相同的列名,则 ON 和 USING 子句会产生等效的结果。

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

此 Join 从右表开始选择列,并将其与左表的每一条记录进行匹配。如果两条记录都满足给定的连接条件,则会将所有列合并到一个新的行集中,并作为输出返回。如果右表中的行在左表中找不到任何匹配的行,则会将右表中的这些行与 Null 值合并。这意味着,无论右表中的行是否与左表中的行匹配,Right Join 都会返回右表中的所有数据。

MySQL RIGHT JOIN 示例

让我们通过一些示例来理解 Right Join 子句的工作原理。

连接两个表的 RIGHT JOIN 子句

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

表:customers

MySQL Right Join

表:orders

MySQL Right Join

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

或,

成功执行上述查询后,将得到等效的输出:

MySQL Right Join

带 WHERE 子句的 RIGHT JOIN

MySQL 使用 WHERE 子句 来提供表的筛选结果。以下示例演示了如何将其与 Right Join 子句结合使用:

此语句产生以下结果:

MySQL Right Join

MySQL RIGHT JOIN 多表连接

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

MySQL Right Join

执行以下语句以连接 customers、orders 和 contacts 三个表:

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

MySQL Right Join

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

当我们需要获取表中没有另一张表中任何匹配数据行的记录时,Right Join 子句也很有用。

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

上述语句返回以下输出:

MySQL Right Join
下一主题MySQL CROSS JOIN