左连接+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

相关推荐

12-27 22:36
门头沟学院 Java
点赞 评论 收藏
分享
11-13 14:37
门头沟学院 Java
程序员牛肉:是的,我觉得你最先需要的是多接触计算机圈子。我感觉你这个写的太幼稚了,根本没换位思考面试官。 你对实习的描述还是我写了前后端,我写了Restful接口,我用了EChatrs。你这让面试官怎么问你?问你什么是前后端?问你什么是Restful?讲真的兄弟,你这个简历在面试官眼里就是啥也不懂的好学生。所以一定要尽快加入一个圈子跟大家多聊聊,看看正儿八经的简历是怎么写的。 可以看一下我首页的简历怎么写那篇文章来学一下,你这里面的坑点我那篇文章里面都有讲过。
点赞 评论 收藏
分享
评论
56
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务