📜  MySQL 右联接(1)

📅  最后修改于: 2023-12-03 15:33:03.031000             🧑  作者: Mango

MySQL 右联接

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 JOINRIGHT JOIN 是等价的。

示例

假设我们有两个表,分别是 orderscustomers

orders 表
+------------+----------+--------+
| 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      |
+------------+----------+--------+
customers 表
+----------+---------------+
| 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 值填充。当你需要处理查询结果与右表中可匹配、但没有相关数据的情况时,右联接就非常有用了。