获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列
这道题我遇到了坑,真的不看答案的时候想了很久都没解决,只能看了答案来分享一下我的想法了
有两张表:
dept_emp
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