题解 | #获取所有非manager的员工emp_no#
获取所有非manager的员工emp_no
http://www.nowcoder.com/practice/32c53d06443346f4a2f2ca733c19660c
两种方法:
方法一:使用 not in
问题是要找出所有非manager
的员工编号,所以我们可以使用 not in
select emp_no from employees where emp_no not in (select emp_no from dept_manager)
方法二:使用 left join
我们这里通过 left join
来解题。主表为 employees
,找对应 dept_no
为空的数据行即可
select e.emp_no from employees e left join dept_manager d on e.emp_no = d.emp_no where dept_no is null
in
和 join
两者的区别:
一般来说,in
关键字适合确定数量的情况,效率较低,不推荐使用。而能使用 in
的情况下,一般都可以转换为 join
。推荐使用 join
。
SQL练习 文章被收录于专栏
已完成牛客的SQL练习。接下来是算法的练习