您能帮助我理解为什么此查询不适用于以下问题: 选择a.name为'员工'来自员工的加入员工b,a.id = b.managerId和a.salary> b.salary
此解决方案有效,但我不明白为什么我们应该加入a.managerId = b.Id: 选择a.name为'员工'来自员工的加入员工b,a.id = b.managerId和a.salary> b.salary
你能帮我理解吗?问题在于: Employee表包含所有员工,包括他们的经理。每个员工都有一个Id,并且还有一个经理Id列。
| Id |名称|薪水| ManagerId |
| 1 |乔| 70000 | 3 |
| 2 |亨利| 80000 | 4 |
| 3 |山姆| 60000 |空|
| 4 |最大| 90000 |空|
根据Employee表,编写一个SQL查询,查找收入高于其经理的员工。对于上表,Joe是唯一一位收入超过其经理的员工。
|员工|
|乔|
答案 0 :(得分:0)
如果您使用不同的表别名,可能更容易理解发生了什么。
select emp.name
from employee emp
join employee manager on emp.managerId = manager.id
where emp.salary > manager.salary
在加入之后,如果您运行select *而不是选择单个列,那么您的记录看起来就像这样:
emp.id, emp.name, emp.salary, emp.managerid, manager.id, manager.name, manager.salary, manager.managerid
一旦你有了,那么where子句非常简单。