方法一 使用JOIN
SELECT
a.NAME 'Employee'
FROM
Employee a JOIN Employee b
ON
a.ManagerId = b.Id AND a.Salary > b.Salary;
方法二 使用 WHERE
从两个表中select将获得这两个表的笛卡尔积。在这种情况下,输出将是4 * 4 = 16条记录。
Id | Name | Salary | ManagerId | Id | Name | Salary | ManagerId |
---|---|---|---|---|---|---|---|
1 | Joe | 70000 | 3 | 1 | Joe | 70000 | 3 |
2 | Henry | 80000 | 4 | 1 | Joe | 70000 | 3 |
3 | Sam | 60000 | 1 | Joe | 70000 | 3 | |
4 | Max | 90000 | 1 | Joe | 70000 | 3 | |
1 | Joe | 70000 | 3 | 2 | Henry | 80000 | 4 |
2 | Henry | 80000 | 4 | 2 | Henry | 80000 | 4 |
3 | Sam | 60000 | 2 | Henry | 80000 | 4 | |
4 | Max | 90000 | 2 | Henry | 80000 | 4 | |
1 | Joe | 70000 | 3 | 3 | Sam | 60000 | |
2 | Henry | 80000 | 4 | 3 | Sam | 60000 | |
3 | Sam | 60000 | 3 | Sam | 60000 | ||
4 | Max | 90000 | 3 | Sam | 60000 | ||
1 | Joe | 70000 | 3 | 4 | Max | 90000 | |
2 | Henry | 80000 | 4 | 4 | Max | 90000 | |
3 | Sam | 60000 | 4 | Max | 90000 | ||
4 | Max | 90000 | 4 | Max | 90000 |
但是,要求的是员工的工资高于他的经理。所以应该在WHERE子句中添加两个条件,如下所示。
SELECT
a.Name 'Employee'
FROM
Employee a JOIN Employee b
ON
a.ManagerId = b.ID AND a.Salary > b.Salary;