RIGHT JOIN
(也称为 RIGHT OUTER JOIN
)是一种 SQL 操作,用于结合两个或多个表中的行,即使左表中没有匹配的行。如果左表中没有匹配的行,则结果集中的左表部分将显示为 NULL
。
SQL RIGHT JOIN 语法
基本的 RIGHT JOIN
语法如下:
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
这里的 column_name(s)
是你想要从连接的表中选择的列,table1
是左表,table2
是右表,table1.column_name
和 table2.column_name
是两个表中用于连接的共同列。
使用示例
假设我们有两个表:employees
和 departments
。employees
表包含员工信息,departments
表包含部门信息。两个表通过 department_id
列相关联。
employees 表:
employee_id | name | department_id |
---|---|---|
1 | John Doe | 1 |
2 | Jane Smith | 2 |
3 | Bob Johnson | 1 |
departments 表:
department_id | department_name |
---|---|
1 | Sales |
2 | Marketing |
3 | IT |
如果你想获取每个部门及其所有员工的列表,包括那些没有员工的部门,你可以使用 RIGHT JOIN
如下:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;
结果:
name | department_name |
---|---|
John Doe | Sales |
Jane Smith | Marketing |
Bob Johnson | Sales |
NULL | IT |
这个查询将返回所有部门及其对应的员工名称,只有在 employees
表和 departments
表中都有匹配的 department_id
时才会返回结果。如果某个部门没有员工(即 department_id
在 employees
表中不存在),那么这个部门将出现在结果集中,而其 name
将显示为 NULL
。
另一个示例
假设我们有两个表:customers
和 orders
。customers
表包含客户信息,orders
表包含订单信息。两个表通过 customer_id
列相关联。
customers 表:
customer_id | customer_name |
---|---|
1 | John Doe |
2 | Jane Smith |
3 | Alice Johnson |
orders 表:
order_id | order_date | customer_id |
---|---|---|
1 | 2021-01-01 | 1 |
2 | 2021-01-02 | 2 |
3 | 2021-01-03 | NULL |
如果我们想要获取所有客户的列表,包括那些没有订单的客户,我们可以使用 RIGHT JOIN
:
SELECT customers.customer_name, orders.order_date
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;
结果:
customer_name | order_date |
---|---|
John Doe | 2021-01-01 |
Jane Smith | 2021-01-02 |
Alice Johnson | NULL |