小知识,大挑战!本文正在参与“ 程序员必备小知识 ”创作活动
我是老表,Python终身学习者,数据分析爱好者,宠猫狂人~
本文是sql刷题从0到100系列的第一篇,坚持分享自己的学习刷题笔记,不断积累,相信终有一天变成大佬~
SQL3 查找当前薪水详情以及部门编号dept_no
我的思路: 直接通过emp_no连接两个表就可以啦,这里的技巧就是左表优先选数据量小的表,比如题目中dept_manager就是相对小的表。
我的题解:
select a.emp_no, b.salary, b.from_date, b.to_date, a.dept_no
from (select *
from dept_manager
) as a
join (select *
from salaries
) as b
on a.emp_no = b.emp_no
order by a.emp_no;
涉及知识点:
- join 连接,还有左连接(left join)和右连接(right join)
- sql 执行顺序(一天发一遍,记住)
from -> where -> group by -> having -> select -> order by -> limit
- 排序:order by 字段名称 desc/asc (desc 降序,asc 升序)
提交结果:
其他题解学习:
思路: 没有什么特别的,主要是将join改为了where实现,另外提出了应该限制时间的想法(应该只统计目前还在职的员工相关信息)。
select b.*,a.dept_no
from dept_manager as a, salaries as b
where a.to_date='9999-01-01'
and b.to_date='9999-01-01'
and a.emp_no = b.emp_no
order by b.emp_no;