这个是我写的sql
我的思路是
找出每个人的dept_no emp_no ,salary a表
找出每个部门leader的dept_no ,emp_no ,salary b表
a表left join b表 on dept_no
where a.salary>b.salary
select
a.emp_no, b.emp_no as manager_no, a.salary ,b.salary
FROM
( SELECT
d.dept_no,d.emp_no,s.salary
FROM
dept_emp d
LEFT JOIN
salaries s
ON
d.emp_no=s.emp_no ) a
left join
(
select
d.dept_no,d.emp_no,s.salary
from
dept_manager d
LEFT JOIN
salaries s
ON
d.emp_no=s.emp_no) b
on
a.dept_no=b.dept_no
where
a.salary > b.salary

下面这个是网友代码 写的比较简短精悍,思路我觉得和我的差不多,但是实现方式不一样

他这个使用俩次salaries表 四个表的笛卡尔积,然后用where 的条件去筛选,

select
de.emp_no,dm.emp_no as manager_no,
s1.salary as emp_salary,s2.salary as manager_salary
from
dept_emp de, dept_manager dm
,salaries s1, salaries s2
where de.dept_no=dm.dept_no
and de.emp_no=s1.emp_no 查出所有员工的薪资
and dm.emp_no=s2.emp_no 查出部门经理的薪资
and s1.salary>s2.salary 员工》部门经理
and s2.to_date='9999-01-01'
and s1.to_date='9999-01-01';