左连接+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
不只是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
where 后面的条件换成e.dept_no is null 就报错了,这是为什么呢
1 回复 分享
发布于 2020-08-25 14:55
哭了,用isnull试了半天才发现is null不能连写,中间还试过''和none,太折磨人了
点赞 回复 分享
发布于 2024-06-06 16:28 广东
楼上的老哥已经解答了噢
点赞 回复 分享
发布于 2020-09-05 19:42

相关推荐

05-07 20:52
吉林大学 Java
点赞 评论 收藏
分享
真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
05-07 13:29
已编辑
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司10个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
56
3
分享

创作者周榜

更多
牛客网
牛客企业服务