SQL 中的 LEFT JOIN 关键字返回所有匹配的记录(或行)以及出现在左表中但不在右表中的记录(或行)。这意味着,如果某行存在于左表中但不在右表中,则结果将包括该行,但在右侧的每一列中都有一个 NULL 值。如果右表中的记录不在左表中,则不会包含在结果中。
LEFT JOIN 的语法是:
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB ON tableA.column_name = tableB.column_name;
SQL 左连接示例:
在这个例子中,我们将考虑两个表 Employee 包含在特定部门工作的员工的详细信息,以及包含部门详细信息的部门表
员工表
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] |
左连接给出匹配的行和出现在左表中但不在右表中的行。在此示例中,我们看到不在特定部门工作的员工,即没有 dept 值为 [NULL],在左连接后包含 [NULL] 值 dept name 和 location。