10.获取所有非manager的员工emp_no
题目内容:
代码及思路:
因为获取的是非manager的员工的emp_no,因此dept_manager.dept_no应该是空的。除此之外,该题涉及到LEFT JOIN的使用,下面介绍LEFT JOIN用法:
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL
在学习过程中一直不太理解INNER JOIN\LEFT JOIN\RIGHT JOIN的区别,在此做个总结:
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
所以此处使用LEFT JOIN的话,可以写成如下:
SELECT employees.emp_no FROM employees LEFT JOIN dept_manager
ON dept_manager.emp_no=employees.emp_no
WHERE dept_manager.dept_no is NULL;