今天被一个朴实无华的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了

本文介绍了一种SQL查询技巧,即如何从员工表和经理表中查询员工及其对应的经理信息,同时排除自身即是经理的情况。文章通过具体示例展示了如何使用NOT IN子查询来实现这一目标。

2万+

被折叠的 条评论
为什么被折叠?



