select m.dept_no,n.emp_no,m.maxsalary from ( select a.dept_no,max(b.salary) as maxsalary from dept_emp a left join salaries b on a.emp_no=b.emp_no group by a.dept_no ) m left join (select a.emp_no,a.dept_no,b.salary as maxsalary from dept_emp a left join salaries b on a.emp_no=b.emp_no ) n on m.dept_no=n.dept_no and m.maxsalary=n.maxsalary order by m.dept_no
首先我们要理解题目的意思,其实题目的意思也很清楚了,关键词有三个:部门、员工、薪水
1.题目给出两张表dept_emp、salaries,我们把它们整合成一张表n,里面包含所有部门所有员工薪水
2.然后我们就要得到部门中的最高薪水,把两张表dept_emp、salaries整合成一张表m
3.最后通过m、n关联得到部门最高薪水的员工,关联条件应该是m.dept_no=n.dept_no and m.maxsalary=n.maxsalary,如果只写一个条件,会出现最高薪水与员工对不上,或者多个部门最高薪水相等但只取到一个部门。
以上题解若有错误还请指出,谢谢!