分享一个逻辑很清晰的答案:
步骤
- 找出所有非manger的emp_no,这里通过差集实现:
select t1.emp_no from employees t1 left join dept_manager t2 on t1.emp_no = t2.emp_no where t2.emp_no is null
- 再通过上表的 emp_no 去连接 dept_emp 和 salaries,找出对应的 dept_no 和 salary
- 注意 salaries 的 to_date='9999-01-01'
完整代码
select t4.dept_no, t3.emp_no, t5.salary from( select t1.emp_no from employees t1 left join dept_manager t2 on t1.emp_no = t2.emp_no where t2.emp_no is null ) t3 inner join dept_emp t4 on t3.emp_no = t4.emp_no inner join salaries t5 on t3.emp_no = t5.emp_no where t5.to_date='9999-01-01'
```