📅  最后修改于: 2023-12-03 15:33:03.031000             🧑  作者: Mango
MySQL 右联接(Right Join)与左联接(Left Join)相反,它返回右表中匹配行以及左表中所有行。它也是 SQL 외부关联 (Outer Join) 的一种。
SELECT select_list
FROM table1
RIGHT [OUTER] JOIN table2 ON join_condition;
select_list
:要选择的列的列表。table1
:左表。table2
:右表。join_condition
:指定连接条件的谓词。注意:在 MySQL 中,RIGHT OUTER JOIN
和 RIGHT JOIN
是等价的。
假设我们有两个表,分别是 orders
和 customers
。
+------------+----------+--------+
| order_date | order_id | cust_id |
+------------+----------+--------+
| 2019-01-01 | 1 | 12 |
| 2019-01-02 | 2 | 9 |
| 2019-01-04 | 3 | 12 |
| 2019-01-05 | 4 | 9 |
+------------+----------+--------+
+----------+---------------+
| cust_id | cust_name |
+----------+---------------+
| 9 | John |
| 12 | Jane |
| 15 | Bob |
+----------+---------------+
我们可以使用以下 SQL 语句来执行右联接:
SELECT *
FROM orders
RIGHT JOIN customers ON orders.cust_id = customers.cust_id;
执行结果:
+------------+----------+--------+----------+---------------+
| order_date | order_id | cust_id | cust_id | cust_name |
+------------+----------+--------+----------+---------------+
| 2019-01-01 | 1 | 12 | 12 | Jane |
| 2019-01-04 | 3 | 12 | 12 | Jane |
| 2019-01-02 | 2 | 9 | 9 | John |
| 2019-01-05 | 4 | 9 | 9 | John |
| NULL | NULL | 15 | 15 | Bob |
+------------+----------+--------+----------+---------------+
MySQL 右联接返回右表中的所有行和与左表中匹配的行。左表中的剩余行使用 NULL 值填充。当你需要处理查询结果与右表中可匹配、但没有相关数据的情况时,右联接就非常有用了。