我的答案:
我的想法就是先把表按照emp_no给合并起来,然后对这个新表t进行筛选最大的工资并且按照部门分组。
select t.dept_no,t.emp_no,max(t.salary) as maxSalary from (select d.dept_no,d.emp_no,s.salary from dept_emp d inner join salaries s on d.emp_no=s.emp_no where d.to_date='9999-01-01' and s.to_date='9999-01-01' ) t group by t.dept_no order by t.dept_no
可以通过的答案:
SELECT a.dept_no,b.emp_no,a.salary FROM (SELECT dept_no,MAX(salary) AS salary FROM salaries INNER JOIN dept_emp ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date = '9999-01-01' AND salaries.to_date='9999-01-01' GROUP BY dept_no) AS a INNER JOIN (SELECT dept_no,dept_emp.emp_no,salary FROM dept_emp INNER JOIN salaries ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date = '9999-01-01' AND salaries.to_date='9999-01-01')AS b ON a.salary=b.salary AND a.dept_no=b.dept_no ORDER BY dept_no
然后主要原因是:mysql select中只能使用group中用过的字段
否则按我原来的做法maxsala和emp——no是不一定对应的!