MySQL RIGHT JOIN子句
简介:在本教程中,您将学习如何使用MySQL RIGHT JOIN从两个表中查询数据。
MySQL RIGHT JOIN子句简介
MySQL RIGHT JOIN与LEFT JOIN相似,除了对联接表的处理相反。
这是两个表t1和t2的RIGHT JOIN的语法:
SELECT select_last FROM t1 RIGHT JOIN t2 ON join_condition;
使用以下语法:
- t1是左表,t2是右表
- join_condition指定匹配两个表中的行的规则。
如果join_condition使用等于运算符(=)并且两个表的联接列具有相同的名称,则可以使用USING语法:
SELECT select_last FROM t1 RIGHT JOIN t2 USING(column_name);
因此,以下连接条件是等效的:
ON t1.column_name = t2.column_name
和
USING (column_name);
RIGHT JOIN的工作方式。
RIGHT JOIN开始从右表(t2)中选择数据。
它匹配右表中的每一行与左表中的每一行。
如果两行都导致联接条件的值为TRUE,则它将列合并为新行,并将新行包括在结果集中。
如果右表中的行没有左表中的匹配行,则它将右表中的行的列与右表中所有列的NULL值合并为新行,并将该行包括在结果集中。
换句话说,RIGHT JOIN返回右表中的所有行,而不管是否有左表中的匹配行。
需要强调的是,RIGHT JOIN和LEFT JOIN子句在功能上是等效的,只要表顺序相反,它们就可以相互替换。
注意,RIGHT OUTER JOIN是RIGHT JOIN的同义词。
MySQL RIGHT JOIN示例
我们将使用示例数据库中的employees和customers表进行演示:
表customers中的salesRepEmployeeNumber列链接到employees表中的employeeNumber列。
销售代表或员工可以负责零个或多个客户。
每个客户由零个或一个销售代表来照顾。
如果salesRepEmployeeNumber列中的值为NULL,则表示客户没有任何销售代表。
1)简单的MySQL RIGHT JOIN示例
该语句使用RIGHT JOIN子句将表客户与表雇员连接在一起。
SELECT employeeNumber, customerNumber FROM customers RIGHT JOIN employees ON salesRepEmployeeNumber = employeeNumber ORDER BY employeeNumber;
在此示例中:
RIGHT JOIN返回表雇员的所有行,无论表雇员中的行在表客户的salesRepEmployeeNumber列中是否具有匹配值。
如果表employees中的一行与表customers中没有匹配的行,则RIGHT JOIN对customerNumber列使用NULL。
2)使用MySQL RIGHT JOIN查找不匹配的行
以下语句使用RIGHT JOIN子句查找不负责任何客户的员工:
SELECT employeeNumber, customerNumber FROM customers RIGHT JOIN employees ON salesRepEmployeeNumber = employeeNumber WHERE customerNumber is NULL ORDER BY employeeNumber;
在本教程中,您学习了如何使用MySQL RIGHT JOIN从两个表中查询数据。