SQL中的LEFT JOIN关键字返回所有匹配的记录(或行)和左表中但不存在于右表中的记录(或行)。这意味着,如果左侧表中存在某个行,但右侧不存在该行,则结果将包括该行,但右侧的每一列中都将具有NULL值。如果右侧表中的记录不在左侧,则该记录将不包含在结果中。
![](https://mangdo-1254073825.cos.ap-chengdu.myqcloud.com//front_eng_imgs/geeksforgeeks2021/SQL%20Left%20Join_0.jpg)
左联接
LEFT JOIN的语法为:
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB ON tableA.column_name = tableB.column_name;
SQL左联接示例:
在此示例中,我们将考虑两个表Employee,它们包含在特定部门工作的雇员的详细信息,而department表则包含该部门的详细信息
员工表
emp_no | emp_name | age | salary | dept_no |
E1 | Varun Singhal | 27 | 30,000 | D1 |
E2 | Amrita Aggarwal | 28 | 25,000 | D2 |
E3 | Ravi Anand | 30 | 34,000 | D1 |
E4 | Nitin Saini | 34 | 54,000 | [NULL] |
E5 | Muskan Garg | 35 | 65,000 | [NULL] |
部门表
dept_no | dept_name | location |
D1 | IT | Delhi |
D2 | HR | Hyderabad |
D3 | FINANCE | Rajasthan |
为了对这两个表执行左联接,我们将使用以下SQL查询:
select emp_no ,emp_name , age, salary ,dept_name, location
from employee
left join department on empolyee.dept_no=department.dept_no;
我们将获得的输出如下:-
emp_no | emp_name | age | salary | dept_name | location |
E1 | Varun Singhal | 27 | 30,000 | IT | Delhi |
E3 | Ravi Anand | 30 | 34,000 | IT | Delh |
E2 | Amrita Singhal | 28 | 25,000 | HR | Hyderabad |
E4 | Nitin Saini | 34 | 54,000 | [NULL] | [NULL] |
E5 | Muskan Garg | 35 | 65,000 | [NULL] | [NULL] |
左联接给出匹配的行以及左表中存在但右表中不存在的行。在此示例中,我们看到不在特定部门工作的员工(即部门没有[NULL]值)在左加入后包含部门名称和位置的[NULL]值。