题目:获取每个部门中当前员工薪水最高的相关信息
代码:
SELECT de.dept_no, de.emp_no, sa.salaryFROM dept_emp AS deINNER JOIN salaries AS saON de.emp_no = sa.emp_noWHERE sa.salary IN (SELECT MAX(sa1.salary)FROM dept_emp AS de1INNER JOIN salaries AS sa1ON de1.emp_no = sa1.emp_noAND de.dept_no = de1.dept_no # 先找出每个部门的最大工资,然后限定部门)ORDER BY de.dept_no ASC
错误代码:
SELECT de.dept_no, de.emp_no, MAX(sa.salary)FROM dept_emp AS deINNER JOIN salaries AS saON de.emp_no = sa.emp_noGROUP BY de.dept_no ORDER BY de.dept_no ASC
错误的原因:MAX(sa.salary)与emp_no不匹配。
按照dept_no 分组后,每个部门有多个人,MAX(sa.salary)可以返回这个部门的最高工资,但是此时返回的emp_no不一定和最高工资对应。