最高薪水的员工可能存在多个

  1. 投影所需字段
-- 该语句将部门所有员工信息查出来
SELECT de.dept_no,si.emp_no,si.salary maxSalary FROM dept_emp de INNER JOIN salaries si ON de.emp_no=si.emp_no
  1. 通过分组找到每个部门最大的薪水
SELECT d.dept_no,max(s.salary) maxSalary FROM dept_emp d INNER JOIN salaries s ON d.emp_no=s.emp_no GROUP BY d.dept_no
  1. 将第二部的结果,作为第一步的筛选条件
SELECT de.dept_no,si.emp_no,si.salary maxSalary FROM dept_emp de INNER JOIN salaries si ON de.emp_no=si.emp_no WHERE EXISTS (
	SELECT * from (
		SELECT d.dept_no,max(s.salary) maxSalary FROM dept_emp d INNER JOIN salaries s ON d.emp_no=s.emp_no GROUP BY d.dept_no
	) a WHERE a.dept_no=de.dept_no AND a.maxSalary = si.salary
) ORDER BY de.dept_no asc;