分享一个逻辑很清晰的答案:

步骤

  1. 找出所有非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
  2. 再通过上表的 emp_no 去连接 dept_emp 和 salaries,找出对应的 dept_no 和 salary
  3. 注意 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'
    

```