题目在这:https://leetcode-cn.com/problems/employees-earning-more-than-their-managers/
sql结构:
Employee 表
+----+-------+--------+-----------+
| Id | Name | Salary | ManagerId |
+----+-------+--------+-----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | NULL |
| 4 | Max | 90000 | NULL |
+----+-------+--------+-----------+
题目分析:
给了一个表,该表里有所有公司的人,每个人都有一个ID,而普通员工则还对应这一个经理的ID。
题目要求找到比经理薪水高的员工。
这里明显使用自连接方法查询,
select a.Name as Employee from Employee as a join Employee as b on
a.ManagerId = b.ID and a.Salary > b.Salary;
这里是a.ManagerId = b.ID
如果写成 a.ID = b.ManageID
则后面是a.Salary < b.Salary
这里的 关系想清楚。。。
知识点:
自连接(join ):
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。