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_empsalaries,我们把它们整合成一张表n,里面包含所有部门所有员工薪水
2.然后我们就要得到部门中的最高薪水,把两张表dept_empsalaries整合成一张表m
3.最后通过m、n关联得到部门最高薪水的员工,关联条件应该是m.dept_no=n.dept_no and m.maxsalary=n.maxsalary,如果只写一个条件,会出现最高薪水与员工对不上,或者多个部门最高薪水相等但只取到一个部门。

以上题解若有错误还请指出,谢谢!