左连接+null 解决战斗

获取所有非manager的员工emp_no

http://www.nowcoder.com/questionTerminal/32c53d06443346f4a2f2ca733c19660c

select e.emp_no
from employees e left join dept_manager d
on d.emp_no = e.emp_no
where d.dept_no is null

本身题目不难,只是理解上稍微有点问题,看了评论区才知道所谓主管就是有dept_no的人,一开始以为dept_no只是个部门号码,人人都有

全部评论
dept_no 为什么只有主管有,不是实际意义的理解上的问题,而是因为有两个表,主管的表是dept_no,而员工的表中是没有dept_no,因此左连接的时候dept_no 是null 的时候说明是员工。
11 回复 分享
发布于 2020-07-06 20:51
一张是经理表,一张是员工表。用员工表left join 经理表 匹配不上的就是普通员工。而匹配不上的直观显示就是left join后 右边的经理表为null,这个null指的是经理表所有的字段 不单单是dept_no。 left join后显示: 员工表.xx 经理表.field1 经理表.field2 经理表.field3 1111 null null null
2 回复 分享
发布于 2020-09-30 10:21
where 后面的条件换成e.dept_no is null 就报错了,这是为什么呢
1 回复 分享
发布于 2020-08-25 14:55
不只是dept_no,只要主管表里有的员工表里没有的都可以作为NULL的判断,例如: select e.emp_no from employees as e left JOIN dept_manager as d ON e.emp_no = d.emp_no where from_date is NULL
1 回复 分享
发布于 2021-10-03 22:52
楼上的老哥已经解答了噢
点赞 回复 分享
发布于 2020-09-05 19:42
哭了,用isnull试了半天才发现is null不能连写,中间还试过''和none,太折磨人了
点赞 回复 分享
发布于 06-06 16:28 广东

相关推荐

昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
55 3 评论
分享
牛客网
牛客企业服务