这是SQL今日一题的第4篇
题目描述
查找所有已经分配部门的员工的last_name和first_name以及dept_no(请注意输出描述里各个列的前后顺序)
这道题用到employees表和dept_emp表,这两个表以emp_no为公共字段。


思路
要用表连接来做,注意题目描述,是已经分配部门的员工的信息,应使用内连接,如果使用外连接的话,那么就应该以dept_emp为主表去连接employees表。
思路1:where连接
思路2:内连接
思路3:左连接
答案
# where 连接
select e.last_name,e.first_name,d.dept_no
from dept_emp as d,employees as e
where e.emp_no = d.emp_no
where连接已经说了很多次,注意两个表的公共字段即可。
# 内连接
SELECT e.last_name,e.first_name,d.dept_no
FROM employees AS e INNER JOIN dept_emp AS d
ON e.emp_no=d.emp_no
可以用where连接的就可以用inner join内连接,只是将where换成了on
# 左连接
select e.last_name,e.first_name,d.dept_no
from dept_emp as d left join employees as e
on e.emp_no = d.emp_no
左连接需要注意以哪个表为主表去连接,题目是要查找已分配部门的员工,所以要用dept_emp为主表去左连接employees表(employees表中含有未分配部门的员工)。
NO.5 题目描述
查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工(请注意输出描述里各个列的前后顺序)
第五题和第四题一起练习,加深对比,第四题是已分配部门的,这一题是所有员工包括未分配部门的,这是区别,思路就是以employess表为主表去左连接。
答案
# 左连接
select e.last_name,e.first_name,d.dept_no
from employees as e left join dept_emp as d
on e.emp_no = d.emp_no
相关阅读:
SQL今日一题(3)
SQL今日一题(2)
SQL每日一题
学习SQL:MySQL必知必会
猜你喜欢:
Excel如何分组排序
数据分析应关注AARRR模型的哪些指标
泰坦尼克号数据分析
深入浅出数据分析
@ 作者:可乐
@ 公众号/知乎专栏/头条/简书:可乐的数据分析之路
@加个人微信:data_cola,备注:进群,拉你入 可乐的数据分析群 和各行各业的小伙伴交流探讨数据分析相关内容


声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)