select t1.emp_no, t2.emp_no as manager_no, t1.salary as emp_salary, t2.salary as manager_salary from (select d.emp_no,d.dept_no,s.salary from dept_emp d inner JOIN salaries s on s.emp_no = d.emp_no) t1 left JOIN (select dm.dept_no, dm.emp_no,ss.salary from dept_manager dm, salaries ss where ss.emp_no = dm.emp_no) t2 on t1.dept_no = t2.dept_no where t1.salary > t2.salary
- 先把所有员工的薪水select出来,作为临时表t1
- 把经理的薪水也select出来,作为临时表t2
- 把t1,t2通过部门id关联起来,得到一张所有员工信息和部门经理薪水的表,由于经理的薪水不会大于他自己本身,所以只用把t1中薪水大于t2中的薪水挑选出来就行