看了别人的答案发现,可以简略写表名感觉简介了不少
select s.*,d.dept_no from salaries as s join dept_manager as d on s.emp_no=d.emp_no where s.to_date='9999-01-01' and d.to_date='9999-01-01'salaries的from_date是当前薪水的开始时间,dept_manager的from_date是作为部门经理的开始时间。当上部门经理之后可能还会有好几次加薪。所以两个表的from_date不一样
因为薪水表是按年发的,而题目要查找的是当前的薪水,所以要过滤掉以前,而dept_manager是因为有领导会离职,to_date时间不一定是9999-01-01,所以要过滤掉离职的领导
下面演示所用的两个表 user表 work表
注释:inner join与join是相同的
图示:LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。
图示:RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。
图示: