答案
select emp.dept_no, s.emp_no, s.salary from salaries s inner join ( select de.emp_no, de.dept_no from dept_emp de, dept_manager dm where de.dept_no = dm.dept_no and de.emp_no <> dm.emp_no ) emp /*查询所有非manager员工的emp_no和dept_no*/ on s.emp_no = emp.emp_no;
思路
- 内连接dept_emp和dept_manager表,查询所有非manager员工的emp_no和dept_no
- 内连接1和salaries表,查询非manager员工的emp_no,dept_no和salary
优化
复制优秀答案,来自@LKP1111
SELECT dept_no, t1.emp_no, salary FROM dept_emp t1 JOIN salaries t2 ON(t1.emp_no = t2.emp_no) WHERE t1.emp_no NOT IN ( SELECT emp_no FROM dept_manager );