今天被一个朴实无华的sql给难住了,惭愧,惭愧。
sql
有一个员工表dept_emp简况如下:
第一行表示为员工编号为10001的部门是d001部门。
有一个部门经理表dept_manager简况如下:
第一行表示为d001部门的经理是编号为10002的员工。
获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示,以上例子如下:
总结:
我最开始没有看懂他的意思,后来懂了就是一个员工表一个经理表,
叫你查询员工对应的经理(排除员工本身是经理的这种情况)
我最开始的sql语句是查询出全部的员工和经理执行了这个sql
select de.emp_no, dm.emp_no as manager
from dept_emp as de
join dept_manager as dm on de.dept_no=dm.dept_no
但是这个是不完成的,把全部都查询出来了,
不符合题目的要求,所有说要加条件筛选出经理出来就要加 where
正常的sql
select de.emp_no, dm.emp_no as manager
from dept_emp as de
join dept_manager as dm on de.dept_no=dm.dept_no
where de.emp_no not in (
select emp_no
from dept_manager
);
解析:where 筛选出条件在用not in 连接子查询把经理的排除在外就ok了