本題使用的是 MySQL8.0,沒有在 MySQL5.6 版本中測驗過,不保證正確。
題目
題目來源:超過經理收入的員工
經理也屬於員工。每個員工都有一個 Id,此外還有一列對應員工的經理的 Id
。查詢收入超過他們經理的員工的姓名
create table employee (
id int,
name varchar(255),
salary int,
managerId int
);
insert into employee values
(1, 'Joe', 70000, 3),
(2, 'Henry', 80000, 4),
(3, 'Sam', 60000, null),
(4, 'Max', 90000, null);
SQL
select employee.name from employee left join employee e
on employee.managerId = e.id
where employee.salary > e.salary;
解析
managerId
是經理 id
,同時經理也是員工,也就是說沒有 managerId
是普通員工,有 managerId
的是經理。
所以將 employee
自連線,連線條件是 employee.managerId = e.id
,就可以把普通員工和經理連線起來了。
然後在篩選出 employee.salary > e.salary
的員工就行了。