法一:一表多用
select de.emp_no,
dm.emp_no as manager_no,
s1.salary as emp_salary,
s2.salary as manager_salary
from dept_emp de,dept_manager dm,salaries s1,salaries s2
where de.dept_no=dm.dept_no
and de.emp_no=s1.emp_no
and dm.emp_no=s2.emp_no
and s1.to_date='9999-01-01'
and s2.to_date='9999-01-01'
and s1.salary>s2.salary13ms 3452KB
法二:分别构建员工工资表和manager工资表,再用部门号联结
员工工资表
SELECT de.dept_no, de.emp_no, s.salary AS emp_salary FROM dept_emp de, salaries s WHERE de.emp_no=s.emp_no AND s.to_date='9999-01-01'
manager工资表
SELECT dm.dept_no, dm.emp_no AS manager_no, s.salary AS manager_salary FROM dept_manager dm, salaries s WHERE dm.emp_no=s.emp_no AND s.to_date='9999-01-01'
最终SQL
SELECT a.emp_no, b.manager_no, a.emp_salary, b.manager_salary FROM (SELECT de.dept_no, de.emp_no, s.salary AS emp_salary FROM dept_emp de, salaries s WHERE de.emp_no=s.emp_no AND s.to_date='9999-01-01') a, (SELECT dm.dept_no, dm.emp_no AS manager_no, s.salary AS manager_salary FROM dept_manager dm, salaries s WHERE dm.emp_no=s.emp_no AND s.to_date='9999-01-01') b WHERE a.dept_no=b.dept_no AND a.emp_salary>b.manager_salary;

京公网安备 11010502036488号