MySQL RIGHT JOIN

摘要:在本教程中,您将学习如何使用 MySQL RIGHT JOIN查询两个表中的数据。

MySQL RIGHT JOIN 子句简介

MySQL RIGHT JOINLEFT JOIN ,只是连接表的处理相反。

以下是两个表t1t2RIGHT JOIN语法:

SELECT 
    select_list
FROM t1
RIGHT JOIN t2 ON 
    join_condition;Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • t1是左表, t2是右表。
  • join_condition指定匹配两个表中的行的规则。

如果join_condition使用等于运算符 ( = ) 并且两个表的连接列具有相同的名称,则可以使用如下所示的USING语法:

SELECT 
    select_list
FROM t1
RIGHT JOIN t2 USING(column_name);Code language: SQL (Structured Query Language) (sql)

因此,以下连接条件是等效的:

ON t1.column_name = t2.column_nameCode language: SQL (Structured Query Language) (sql)

USING (column_name);Code language: SQL (Structured Query Language) (sql)

RIGHT JOIN如何运作。

RIGHT JOIN开始从右表中选择数据 ( t2 )。它将右表中的每一行与左表中的每一行相匹配。如果这两行都导致连接条件计算为TRUE ,则RIGHT JOIN将这些行的列组合成一个新行,并将该新行包含在结果集中。

如果右表中的行没有左表中的匹配行,则RIGHT JOIN将右表中的行的列与右表中所有列的NULL值组合成一个新行,并将该行包含在结果中放。

换句话说, RIGHT JOIN返回右表中的所有行,无论左表中是否有匹配的行。

需要强调的是, RIGHT JOINLEFT JOIN子句在功能上是等效的,只要表顺序相反,它们就可以相互替换。

请注意, RIGHT OUTER JOINRIGHT JOIN的同义词。因此,您可以互换使用它们。

MySQL RIGHT JOIN 子句示例

我们将使用示例数据库中的employeescustomers表进行演示:

customers表中的salesRepEmployeeNumber列链接到employees表中的employeeNumber列。

销售代表或员工可能负责零个或多个客户。每个客户都由零或一名销售代表负责。

如果salesRepEmployeeNumber列中的值为 NULL,则表示该客户没有任何销售代表。

1) 简单的 MySQL RIGHT JOIN 示例

该语句使用RIGHT JOIN子句将customers表与employees表连接起来。

SELECT 
    employeeNumber, 
    customerNumber
FROM
    customers
RIGHT JOIN employees 
    ON salesRepEmployeeNumber = employeeNumber
ORDER BY 
	employeeNumber;Code language: SQL (Structured Query Language) (sql)
MySQL 右连接示例

在这个例子中:

  • RIGHT JOIN返回employees表中的所有行,无论employees表中的行在customers表的salesRepEmployeeNumber列中是否具有匹配的值。
  • 如果employees表中的行与customers表中没有匹配的行,则RIGHT JOINcustomerNumber列使用NULL

2)使用MySQL右连接 查找不匹配的行

以下语句使用RIGHT JOIN子句查找不负责任何客户的员工:

SELECT 
    employeeNumber, 
    customerNumber
FROM
    customers
RIGHT JOIN employees ON 
	salesRepEmployeeNumber = employeeNumber
WHERE customerNumber is NULL
ORDER BY employeeNumber;Code language: SQL (Structured Query Language) (sql)
MySQL RIGHT JOIN - 查找不匹配的行

概括

  • MySQL RIGHT JOIN允许您从两个或多个相关表中查询数据。
  • RIGHT JOIN开始从右表中选择行。无论左表中是否有匹配行,它总是从右表返回行。
  • RIGHT OUTER JOINRIGHT JOIN的同义词。
本教程有帮助吗?