MySQL RIGHT JOIN 子句
简介:在本教程中,您将学习如何使用MySQL
RIGHT JOIN
从两个或多个表中查询数据。
MySQL RIGHT JOIN子句简介
MySQLRIGHT JOIN
类似于LEFT JOIN
是对表反转的处理。
以下语句使用以下RIGHT JOIN
子句查询来自两个表t1和t2的数据:
SELECT * FROM t1 RIGHT JOIN t2 ON join_predicate;在以上脚本中:
t1
是左表,t2
是右表join_predicate
是将左表(t1
)上的行与右表(t2
)上的行匹配的条件
join_predicate
写法:
t1.pk = t2.fk或者如果两个表的公共列具有
相同的名称
,则可以使用以下语法:
USING (common_column);以下描述了
RIGHT JOIN
子句的工作原理。
t2
表中的所有行(右表)将在结果集中至少出现一次。- 基于
join_predicate
条件,如果t1
表中没有匹配的行(左表),则t1
表中的列中将显示NULL
。
重要:
RIGHT JOIN
与LEFT JOIN
子句在功能上是等效的,只要切换表顺序,它们就可以互相替换。
注意:RIGHT OUTER JOIN
是RIGHT JOIN
的同义词。
MySQL RIGHT JOIN示例
假设我们有两个表,t1
并t2
具有以下结构和数据:
CREATE TABLE t1 ( id INT PRIMARY KEY, pattern VARCHAR(50) NOT NULL ); CREATE TABLE t2 ( id VARCHAR(50) PRIMARY KEY, pattern VARCHAR(50) NOT NULL ); INSERT INTO t1(id, pattern) VALUES(1,'Divot'), (2,'Brick'), (3,'Grid'); INSERT INTO t2(id, pattern) VALUES('A','Brick'), ('B','Grid'), ('C','Diamond');以下查询连接两个表
t1
并t2
使用pattern
列:
SELECT t1.id, t2.id FROM t1 RIGHT JOIN t2 USING (pattern) ORDER BY t2.id;运行结果:
+------+----+ | id | id | +------+----+ | 2 | A | | 3 | B | | NULL | C | +------+----+ 3 rows in set (0.00 sec)下图说明了
RIGHT JOIN
条款的结果:
请参阅以下内容employees
和customers
示例数据库。
以下查询获取销售代表及其客户:
SELECT concat(e.firstName,' ', e.lastName) salesman, e.jobTitle, customerName FROM employees e RIGHT JOIN customers c ON e.employeeNumber = c.salesRepEmployeeNumber AND e.jobTitle = 'Sales Rep' ORDER BY customerName;运行结果:
+------------------+-----------+------------------------------------+ | salesman | jobTitle | customerName | +------------------+-----------+------------------------------------+ | Gerard Hernandez | Sales Rep | Alpha Cognac | | Foon Yue Tseng | Sales Rep | American Souvenirs Inc | | Pamela Castillo | Sales Rep | Amica Models & Co. | | NULL | NULL | ANG Resellers | | Andy Fixter | Sales Rep | Anna's Decorations, Ltd | | NULL | NULL | Anton Designs, Ltd. | | NULL | NULL | Asian Shopping Network, Co | | NULL | NULL | Asian Treasures, Inc. | | Gerard Hernandez | Sales Rep | Atelier graphique | ...因为我们使用
RIGHT JOIN
,所有客户(右表)都出现在结果集中。我们还发现,有些客户的salseman
与 jobTitle
字段为 NULL
。
在本教程中,您学习了如何使用MySQL RIGHT JOIN
从两个或多个表中查询数据。