正确答案
SELECT dept_no,emp_no,salary
FROM employees
INNER JOIN dept_emp
USING(emp_no)
INNER JOIN salaries
USING(emp_no)
WHERE emp_no not IN(
SELECT emp_no from dept_manager WHERE to_date = '9999-01-01')
- to_date='*' 增加了员工的在岗时间限制,强调目前在职。-- 此句不需要加,不影响答案。
- 导致答案错误的是应该用inner join 而非left join。反推题目要求,题目原表中存在员工只有emp_no,没有部门信息或工资信息,这部分员工也步应出现在结果集中,所以要用inner。
错误答案
SELECT dept_no,emp_no,salary
FROM employees
LEFT JOIN dept_emp
USING(emp_no)
LEFT JOIN salaries
USING(emp_no)
WHERE emp_no not IN(
SELECT emp_no from dept_manager)