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从两个或多个表中查询数据。
