获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列

这道题我遇到了坑,真的不看答案的时候想了很久都没解决,只能看了答案来分享一下我的想法了

有两张表:
dept_emp
dept_emp
salaries
salaries
正确答案的结果是这样的:
正确答案
错误写法:

SELECT 
  d.dept_no,
  d.emp_no,max( s.salary ) AS max_salary 
FROM 
  dept_emp d JOIN salaries s ON ( s.emp_no = d.emp_no ) 
GROUP BY dept_no 
ORDER BY dept_no

然后结果是这样的:
错误结果
dept_no为d004的最高薪资本来是10004的,但是却显示的是10003的信息,所以这里的数据对应不上了
所以连表的时候条件需要emp_no和salary对应才行
正确的sql语句为:

SELECT 
  dept_no, 
  d.emp_no, 
  salary as maxSalary 
FROM 
  dept_emp d, salaries s 
WHERE 
  d.emp_no = s.emp_no 
AND ( dept_no, salary ) IN 
  ( 
    SELECT 
      dept_no, 
      MAX( salary ) maxSalary 
    FROM 
      dept_emp d1, salaries s1 
    WHERE 
      d1.emp_no = s1.emp_no 
    GROUP BY dept_no 
  ) 
ORDER BY dept_no