#思路解析:首先我们需要将两个表连在一起才能将提取出dept_no,emp_no,maxSalary三个相对应的数据,但用MAX函数时,对SELECT 查询的列有限制,所以我们需要单独做个表来找到每个部门的最大薪资,就是下面的t2表。有了这个最大的maxSalary我们就可以筛选出想要的一行数据了,但此时并不能用WHERE,因为没有一个完整的表包括emp_no,dept_no,salary三列数据,因此我们需要做一份包含这三列数据的表就是t1,最后我们用dept_no将两个表连接在一起,用AND 的最大工资筛选出所需的数据
SELECT t1.dept_no,t1.emp_no,t2.maxSalary
FROM
(SELECT s.emp_no,dept_no,salary
FROM dept_emp as de
JOIN salaries as s
ON s.emp_no=de.emp_no)as t1
JOIN
(SELECT dept_no,max(salary) as maxSalary
FROM dept_emp as de
JOIN salaries as s
ON s.emp_no=de.emp_no
GROUP BY dept_no) as t2
ON t2.dept_no=t1.dept_no
and t1.salary=t2.maxSalary #注意这句话不能因为t1的salary必须扔掉
ORDER BY t1.dept_no