题目描述
有一个员工表 employees 简况如下:
有一个部门员工关系表 dept_emp 简况如下:
有一个部门经理表 dept_manager 简况如下:
有一个薪水表 salaries 简况如下:
获取所有非 manger 员工的薪水情况,给出 dept_no,emp_no,以及对应的 salary,上述示例的查询结果如下:
答案解析
我们可以先获取所有非 manger 的员工的部门与员工编号信息,SQL 语句如下:
SELECT dept_no,emp_no FROM dept_emp
WHERE emp_no NOT IN (
SELECT emp_no FROM dept_manager
)
然后,将此查询结果与薪资表进行内连接查询即可获取所有非 manager 员工的薪资信息,SQL 语句如下:
SELECT m.dept_no,m.emp_no,s.salary
FROM
(
-- 获取所有非 manager 的员工
SELECT dept_no,emp_no FROM dept_emp
WHERE emp_no NOT IN (
SELECT emp_no FROM dept_manager
)
)AS m
INNER JOIN salaries AS s
ON m.emp_no = s.emp_no;